// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: control.proto

package io.grpc.benchmarks.proto;

public final class Control {
  private Control() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code grpc.testing.ClientType}
   */
  public enum ClientType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * Many languages support a basic distinction between using
     * sync or async client, and this allows the specification
     * </pre>
     *
     * <code>SYNC_CLIENT = 0;</code>
     */
    SYNC_CLIENT(0),
    /**
     * <code>ASYNC_CLIENT = 1;</code>
     */
    ASYNC_CLIENT(1),
    /**
     * <pre>
     * used for some language-specific variants
     * </pre>
     *
     * <code>OTHER_CLIENT = 2;</code>
     */
    OTHER_CLIENT(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Many languages support a basic distinction between using
     * sync or async client, and this allows the specification
     * </pre>
     *
     * <code>SYNC_CLIENT = 0;</code>
     */
    public static final int SYNC_CLIENT_VALUE = 0;
    /**
     * <code>ASYNC_CLIENT = 1;</code>
     */
    public static final int ASYNC_CLIENT_VALUE = 1;
    /**
     * <pre>
     * used for some language-specific variants
     * </pre>
     *
     * <code>OTHER_CLIENT = 2;</code>
     */
    public static final int OTHER_CLIENT_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static ClientType valueOf(int value) {
      return forNumber(value);
    }

    public static ClientType forNumber(int value) {
      switch (value) {
        case 0: return SYNC_CLIENT;
        case 1: return ASYNC_CLIENT;
        case 2: return OTHER_CLIENT;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<ClientType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        ClientType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<ClientType>() {
            public ClientType findValueByNumber(int number) {
              return ClientType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.getDescriptor().getEnumTypes().get(0);
    }

    private static final ClientType[] VALUES = values();

    public static ClientType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private ClientType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:grpc.testing.ClientType)
  }

  /**
   * Protobuf enum {@code grpc.testing.ServerType}
   */
  public enum ServerType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>SYNC_SERVER = 0;</code>
     */
    SYNC_SERVER(0),
    /**
     * <code>ASYNC_SERVER = 1;</code>
     */
    ASYNC_SERVER(1),
    /**
     * <code>ASYNC_GENERIC_SERVER = 2;</code>
     */
    ASYNC_GENERIC_SERVER(2),
    /**
     * <pre>
     * used for some language-specific variants
     * </pre>
     *
     * <code>OTHER_SERVER = 3;</code>
     */
    OTHER_SERVER(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>SYNC_SERVER = 0;</code>
     */
    public static final int SYNC_SERVER_VALUE = 0;
    /**
     * <code>ASYNC_SERVER = 1;</code>
     */
    public static final int ASYNC_SERVER_VALUE = 1;
    /**
     * <code>ASYNC_GENERIC_SERVER = 2;</code>
     */
    public static final int ASYNC_GENERIC_SERVER_VALUE = 2;
    /**
     * <pre>
     * used for some language-specific variants
     * </pre>
     *
     * <code>OTHER_SERVER = 3;</code>
     */
    public static final int OTHER_SERVER_VALUE = 3;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static ServerType valueOf(int value) {
      return forNumber(value);
    }

    public static ServerType forNumber(int value) {
      switch (value) {
        case 0: return SYNC_SERVER;
        case 1: return ASYNC_SERVER;
        case 2: return ASYNC_GENERIC_SERVER;
        case 3: return OTHER_SERVER;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<ServerType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        ServerType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<ServerType>() {
            public ServerType findValueByNumber(int number) {
              return ServerType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.getDescriptor().getEnumTypes().get(1);
    }

    private static final ServerType[] VALUES = values();

    public static ServerType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private ServerType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:grpc.testing.ServerType)
  }

  /**
   * Protobuf enum {@code grpc.testing.RpcType}
   */
  public enum RpcType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNARY = 0;</code>
     */
    UNARY(0),
    /**
     * <code>STREAMING = 1;</code>
     */
    STREAMING(1),
    /**
     * <code>STREAMING_FROM_CLIENT = 2;</code>
     */
    STREAMING_FROM_CLIENT(2),
    /**
     * <code>STREAMING_FROM_SERVER = 3;</code>
     */
    STREAMING_FROM_SERVER(3),
    /**
     * <code>STREAMING_BOTH_WAYS = 4;</code>
     */
    STREAMING_BOTH_WAYS(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNARY = 0;</code>
     */
    public static final int UNARY_VALUE = 0;
    /**
     * <code>STREAMING = 1;</code>
     */
    public static final int STREAMING_VALUE = 1;
    /**
     * <code>STREAMING_FROM_CLIENT = 2;</code>
     */
    public static final int STREAMING_FROM_CLIENT_VALUE = 2;
    /**
     * <code>STREAMING_FROM_SERVER = 3;</code>
     */
    public static final int STREAMING_FROM_SERVER_VALUE = 3;
    /**
     * <code>STREAMING_BOTH_WAYS = 4;</code>
     */
    public static final int STREAMING_BOTH_WAYS_VALUE = 4;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static RpcType valueOf(int value) {
      return forNumber(value);
    }

    public static RpcType forNumber(int value) {
      switch (value) {
        case 0: return UNARY;
        case 1: return STREAMING;
        case 2: return STREAMING_FROM_CLIENT;
        case 3: return STREAMING_FROM_SERVER;
        case 4: return STREAMING_BOTH_WAYS;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<RpcType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        RpcType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<RpcType>() {
            public RpcType findValueByNumber(int number) {
              return RpcType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.getDescriptor().getEnumTypes().get(2);
    }

    private static final RpcType[] VALUES = values();

    public static RpcType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private RpcType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:grpc.testing.RpcType)
  }

  public interface PoissonParamsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.PoissonParams)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
     * </pre>
     *
     * <code>double offered_load = 1;</code>
     */
    double getOfferedLoad();
  }
  /**
   * <pre>
   * Parameters of poisson process distribution, which is a good representation
   * of activity coming in from independent identical stationary sources.
   * </pre>
   *
   * Protobuf type {@code grpc.testing.PoissonParams}
   */
  public  static final class PoissonParams extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.PoissonParams)
      PoissonParamsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PoissonParams.newBuilder() to construct.
    private PoissonParams(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PoissonParams() {
      offeredLoad_ = 0D;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PoissonParams(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 9: {

              offeredLoad_ = input.readDouble();
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_PoissonParams_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_PoissonParams_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.PoissonParams.class, io.grpc.benchmarks.proto.Control.PoissonParams.Builder.class);
    }

    public static final int OFFERED_LOAD_FIELD_NUMBER = 1;
    private double offeredLoad_;
    /**
     * <pre>
     * The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
     * </pre>
     *
     * <code>double offered_load = 1;</code>
     */
    public double getOfferedLoad() {
      return offeredLoad_;
    }

    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 {
      if (offeredLoad_ != 0D) {
        output.writeDouble(1, offeredLoad_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (offeredLoad_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, offeredLoad_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.PoissonParams)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.PoissonParams other = (io.grpc.benchmarks.proto.Control.PoissonParams) obj;

      boolean result = true;
      result = result && (
          java.lang.Double.doubleToLongBits(getOfferedLoad())
          == java.lang.Double.doubleToLongBits(
              other.getOfferedLoad()));
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OFFERED_LOAD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getOfferedLoad()));
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.PoissonParams parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams 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 io.grpc.benchmarks.proto.Control.PoissonParams parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams 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 io.grpc.benchmarks.proto.Control.PoissonParams parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.PoissonParams 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(io.grpc.benchmarks.proto.Control.PoissonParams 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;
    }
    /**
     * <pre>
     * Parameters of poisson process distribution, which is a good representation
     * of activity coming in from independent identical stationary sources.
     * </pre>
     *
     * Protobuf type {@code grpc.testing.PoissonParams}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.PoissonParams)
        io.grpc.benchmarks.proto.Control.PoissonParamsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_PoissonParams_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_PoissonParams_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.PoissonParams.class, io.grpc.benchmarks.proto.Control.PoissonParams.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.PoissonParams.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        offeredLoad_ = 0D;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_PoissonParams_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.PoissonParams getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.PoissonParams build() {
        io.grpc.benchmarks.proto.Control.PoissonParams result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.PoissonParams buildPartial() {
        io.grpc.benchmarks.proto.Control.PoissonParams result = new io.grpc.benchmarks.proto.Control.PoissonParams(this);
        result.offeredLoad_ = offeredLoad_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.PoissonParams) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.PoissonParams)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.PoissonParams other) {
        if (other == io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance()) return this;
        if (other.getOfferedLoad() != 0D) {
          setOfferedLoad(other.getOfferedLoad());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.PoissonParams parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.PoissonParams) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private double offeredLoad_ ;
      /**
       * <pre>
       * The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
       * </pre>
       *
       * <code>double offered_load = 1;</code>
       */
      public double getOfferedLoad() {
        return offeredLoad_;
      }
      /**
       * <pre>
       * The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
       * </pre>
       *
       * <code>double offered_load = 1;</code>
       */
      public Builder setOfferedLoad(double value) {
        
        offeredLoad_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
       * </pre>
       *
       * <code>double offered_load = 1;</code>
       */
      public Builder clearOfferedLoad() {
        
        offeredLoad_ = 0D;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.PoissonParams)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.PoissonParams)
    private static final io.grpc.benchmarks.proto.Control.PoissonParams DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.PoissonParams();
    }

    public static io.grpc.benchmarks.proto.Control.PoissonParams getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.PoissonParams getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClosedLoopParamsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ClosedLoopParams)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Once an RPC finishes, immediately start a new one.
   * No configuration parameters needed.
   * </pre>
   *
   * Protobuf type {@code grpc.testing.ClosedLoopParams}
   */
  public  static final class ClosedLoopParams extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ClosedLoopParams)
      ClosedLoopParamsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClosedLoopParams.newBuilder() to construct.
    private ClosedLoopParams(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClosedLoopParams() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClosedLoopParams(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClosedLoopParams_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClosedLoopParams_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ClosedLoopParams.class, io.grpc.benchmarks.proto.Control.ClosedLoopParams.Builder.class);
    }

    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 {
      unknownFields.writeTo(output);
    }

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

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ClosedLoopParams)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ClosedLoopParams other = (io.grpc.benchmarks.proto.Control.ClosedLoopParams) obj;

      boolean result = true;
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams 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 io.grpc.benchmarks.proto.Control.ClosedLoopParams parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams 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 io.grpc.benchmarks.proto.Control.ClosedLoopParams parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams 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(io.grpc.benchmarks.proto.Control.ClosedLoopParams 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;
    }
    /**
     * <pre>
     * Once an RPC finishes, immediately start a new one.
     * No configuration parameters needed.
     * </pre>
     *
     * Protobuf type {@code grpc.testing.ClosedLoopParams}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ClosedLoopParams)
        io.grpc.benchmarks.proto.Control.ClosedLoopParamsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClosedLoopParams_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClosedLoopParams_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ClosedLoopParams.class, io.grpc.benchmarks.proto.Control.ClosedLoopParams.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ClosedLoopParams.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClosedLoopParams_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ClosedLoopParams getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ClosedLoopParams build() {
        io.grpc.benchmarks.proto.Control.ClosedLoopParams result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ClosedLoopParams buildPartial() {
        io.grpc.benchmarks.proto.Control.ClosedLoopParams result = new io.grpc.benchmarks.proto.Control.ClosedLoopParams(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ClosedLoopParams) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ClosedLoopParams)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ClosedLoopParams other) {
        if (other == io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ClosedLoopParams parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ClosedLoopParams) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ClosedLoopParams)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ClosedLoopParams)
    private static final io.grpc.benchmarks.proto.Control.ClosedLoopParams DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ClosedLoopParams();
    }

    public static io.grpc.benchmarks.proto.Control.ClosedLoopParams getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ClosedLoopParams getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadParamsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.LoadParams)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
     */
    boolean hasClosedLoop();
    /**
     * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ClosedLoopParams getClosedLoop();
    /**
     * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ClosedLoopParamsOrBuilder getClosedLoopOrBuilder();

    /**
     * <code>.grpc.testing.PoissonParams poisson = 2;</code>
     */
    boolean hasPoisson();
    /**
     * <code>.grpc.testing.PoissonParams poisson = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.PoissonParams getPoisson();
    /**
     * <code>.grpc.testing.PoissonParams poisson = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.PoissonParamsOrBuilder getPoissonOrBuilder();

    public io.grpc.benchmarks.proto.Control.LoadParams.LoadCase getLoadCase();
  }
  /**
   * Protobuf type {@code grpc.testing.LoadParams}
   */
  public  static final class LoadParams extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.LoadParams)
      LoadParamsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LoadParams.newBuilder() to construct.
    private LoadParams(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LoadParams() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LoadParams(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.grpc.benchmarks.proto.Control.ClosedLoopParams.Builder subBuilder = null;
              if (loadCase_ == 1) {
                subBuilder = ((io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_).toBuilder();
              }
              load_ =
                  input.readMessage(io.grpc.benchmarks.proto.Control.ClosedLoopParams.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_);
                load_ = subBuilder.buildPartial();
              }
              loadCase_ = 1;
              break;
            }
            case 18: {
              io.grpc.benchmarks.proto.Control.PoissonParams.Builder subBuilder = null;
              if (loadCase_ == 2) {
                subBuilder = ((io.grpc.benchmarks.proto.Control.PoissonParams) load_).toBuilder();
              }
              load_ =
                  input.readMessage(io.grpc.benchmarks.proto.Control.PoissonParams.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.grpc.benchmarks.proto.Control.PoissonParams) load_);
                load_ = subBuilder.buildPartial();
              }
              loadCase_ = 2;
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_LoadParams_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_LoadParams_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.LoadParams.class, io.grpc.benchmarks.proto.Control.LoadParams.Builder.class);
    }

    private int loadCase_ = 0;
    private java.lang.Object load_;
    public enum LoadCase
        implements com.google.protobuf.Internal.EnumLite {
      CLOSED_LOOP(1),
      POISSON(2),
      LOAD_NOT_SET(0);
      private final int value;
      private LoadCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static LoadCase valueOf(int value) {
        return forNumber(value);
      }

      public static LoadCase forNumber(int value) {
        switch (value) {
          case 1: return CLOSED_LOOP;
          case 2: return POISSON;
          case 0: return LOAD_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public LoadCase
    getLoadCase() {
      return LoadCase.forNumber(
          loadCase_);
    }

    public static final int CLOSED_LOOP_FIELD_NUMBER = 1;
    /**
     * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
     */
    public boolean hasClosedLoop() {
      return loadCase_ == 1;
    }
    /**
     * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ClosedLoopParams getClosedLoop() {
      if (loadCase_ == 1) {
         return (io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_;
      }
      return io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance();
    }
    /**
     * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ClosedLoopParamsOrBuilder getClosedLoopOrBuilder() {
      if (loadCase_ == 1) {
         return (io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_;
      }
      return io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance();
    }

    public static final int POISSON_FIELD_NUMBER = 2;
    /**
     * <code>.grpc.testing.PoissonParams poisson = 2;</code>
     */
    public boolean hasPoisson() {
      return loadCase_ == 2;
    }
    /**
     * <code>.grpc.testing.PoissonParams poisson = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.PoissonParams getPoisson() {
      if (loadCase_ == 2) {
         return (io.grpc.benchmarks.proto.Control.PoissonParams) load_;
      }
      return io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance();
    }
    /**
     * <code>.grpc.testing.PoissonParams poisson = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.PoissonParamsOrBuilder getPoissonOrBuilder() {
      if (loadCase_ == 2) {
         return (io.grpc.benchmarks.proto.Control.PoissonParams) load_;
      }
      return io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance();
    }

    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 {
      if (loadCase_ == 1) {
        output.writeMessage(1, (io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_);
      }
      if (loadCase_ == 2) {
        output.writeMessage(2, (io.grpc.benchmarks.proto.Control.PoissonParams) load_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (loadCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_);
      }
      if (loadCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (io.grpc.benchmarks.proto.Control.PoissonParams) load_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.LoadParams)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.LoadParams other = (io.grpc.benchmarks.proto.Control.LoadParams) obj;

      boolean result = true;
      result = result && getLoadCase().equals(
          other.getLoadCase());
      if (!result) return false;
      switch (loadCase_) {
        case 1:
          result = result && getClosedLoop()
              .equals(other.getClosedLoop());
          break;
        case 2:
          result = result && getPoisson()
              .equals(other.getPoisson());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (loadCase_) {
        case 1:
          hash = (37 * hash) + CLOSED_LOOP_FIELD_NUMBER;
          hash = (53 * hash) + getClosedLoop().hashCode();
          break;
        case 2:
          hash = (37 * hash) + POISSON_FIELD_NUMBER;
          hash = (53 * hash) + getPoisson().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.LoadParams parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams 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 io.grpc.benchmarks.proto.Control.LoadParams parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams 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 io.grpc.benchmarks.proto.Control.LoadParams parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.LoadParams 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(io.grpc.benchmarks.proto.Control.LoadParams 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;
    }
    /**
     * Protobuf type {@code grpc.testing.LoadParams}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.LoadParams)
        io.grpc.benchmarks.proto.Control.LoadParamsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_LoadParams_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_LoadParams_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.LoadParams.class, io.grpc.benchmarks.proto.Control.LoadParams.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.LoadParams.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        loadCase_ = 0;
        load_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_LoadParams_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.LoadParams getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.LoadParams.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.LoadParams build() {
        io.grpc.benchmarks.proto.Control.LoadParams result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.LoadParams buildPartial() {
        io.grpc.benchmarks.proto.Control.LoadParams result = new io.grpc.benchmarks.proto.Control.LoadParams(this);
        if (loadCase_ == 1) {
          if (closedLoopBuilder_ == null) {
            result.load_ = load_;
          } else {
            result.load_ = closedLoopBuilder_.build();
          }
        }
        if (loadCase_ == 2) {
          if (poissonBuilder_ == null) {
            result.load_ = load_;
          } else {
            result.load_ = poissonBuilder_.build();
          }
        }
        result.loadCase_ = loadCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.LoadParams) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.LoadParams)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.LoadParams other) {
        if (other == io.grpc.benchmarks.proto.Control.LoadParams.getDefaultInstance()) return this;
        switch (other.getLoadCase()) {
          case CLOSED_LOOP: {
            mergeClosedLoop(other.getClosedLoop());
            break;
          }
          case POISSON: {
            mergePoisson(other.getPoisson());
            break;
          }
          case LOAD_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.LoadParams parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.LoadParams) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int loadCase_ = 0;
      private java.lang.Object load_;
      public LoadCase
          getLoadCase() {
        return LoadCase.forNumber(
            loadCase_);
      }

      public Builder clearLoad() {
        loadCase_ = 0;
        load_ = null;
        onChanged();
        return this;
      }


      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ClosedLoopParams, io.grpc.benchmarks.proto.Control.ClosedLoopParams.Builder, io.grpc.benchmarks.proto.Control.ClosedLoopParamsOrBuilder> closedLoopBuilder_;
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      public boolean hasClosedLoop() {
        return loadCase_ == 1;
      }
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClosedLoopParams getClosedLoop() {
        if (closedLoopBuilder_ == null) {
          if (loadCase_ == 1) {
            return (io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_;
          }
          return io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance();
        } else {
          if (loadCase_ == 1) {
            return closedLoopBuilder_.getMessage();
          }
          return io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      public Builder setClosedLoop(io.grpc.benchmarks.proto.Control.ClosedLoopParams value) {
        if (closedLoopBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          load_ = value;
          onChanged();
        } else {
          closedLoopBuilder_.setMessage(value);
        }
        loadCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      public Builder setClosedLoop(
          io.grpc.benchmarks.proto.Control.ClosedLoopParams.Builder builderForValue) {
        if (closedLoopBuilder_ == null) {
          load_ = builderForValue.build();
          onChanged();
        } else {
          closedLoopBuilder_.setMessage(builderForValue.build());
        }
        loadCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      public Builder mergeClosedLoop(io.grpc.benchmarks.proto.Control.ClosedLoopParams value) {
        if (closedLoopBuilder_ == null) {
          if (loadCase_ == 1 &&
              load_ != io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance()) {
            load_ = io.grpc.benchmarks.proto.Control.ClosedLoopParams.newBuilder((io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_)
                .mergeFrom(value).buildPartial();
          } else {
            load_ = value;
          }
          onChanged();
        } else {
          if (loadCase_ == 1) {
            closedLoopBuilder_.mergeFrom(value);
          }
          closedLoopBuilder_.setMessage(value);
        }
        loadCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      public Builder clearClosedLoop() {
        if (closedLoopBuilder_ == null) {
          if (loadCase_ == 1) {
            loadCase_ = 0;
            load_ = null;
            onChanged();
          }
        } else {
          if (loadCase_ == 1) {
            loadCase_ = 0;
            load_ = null;
          }
          closedLoopBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClosedLoopParams.Builder getClosedLoopBuilder() {
        return getClosedLoopFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClosedLoopParamsOrBuilder getClosedLoopOrBuilder() {
        if ((loadCase_ == 1) && (closedLoopBuilder_ != null)) {
          return closedLoopBuilder_.getMessageOrBuilder();
        } else {
          if (loadCase_ == 1) {
            return (io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_;
          }
          return io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ClosedLoopParams, io.grpc.benchmarks.proto.Control.ClosedLoopParams.Builder, io.grpc.benchmarks.proto.Control.ClosedLoopParamsOrBuilder> 
          getClosedLoopFieldBuilder() {
        if (closedLoopBuilder_ == null) {
          if (!(loadCase_ == 1)) {
            load_ = io.grpc.benchmarks.proto.Control.ClosedLoopParams.getDefaultInstance();
          }
          closedLoopBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.ClosedLoopParams, io.grpc.benchmarks.proto.Control.ClosedLoopParams.Builder, io.grpc.benchmarks.proto.Control.ClosedLoopParamsOrBuilder>(
                  (io.grpc.benchmarks.proto.Control.ClosedLoopParams) load_,
                  getParentForChildren(),
                  isClean());
          load_ = null;
        }
        loadCase_ = 1;
        onChanged();;
        return closedLoopBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.PoissonParams, io.grpc.benchmarks.proto.Control.PoissonParams.Builder, io.grpc.benchmarks.proto.Control.PoissonParamsOrBuilder> poissonBuilder_;
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      public boolean hasPoisson() {
        return loadCase_ == 2;
      }
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.PoissonParams getPoisson() {
        if (poissonBuilder_ == null) {
          if (loadCase_ == 2) {
            return (io.grpc.benchmarks.proto.Control.PoissonParams) load_;
          }
          return io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance();
        } else {
          if (loadCase_ == 2) {
            return poissonBuilder_.getMessage();
          }
          return io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      public Builder setPoisson(io.grpc.benchmarks.proto.Control.PoissonParams value) {
        if (poissonBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          load_ = value;
          onChanged();
        } else {
          poissonBuilder_.setMessage(value);
        }
        loadCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      public Builder setPoisson(
          io.grpc.benchmarks.proto.Control.PoissonParams.Builder builderForValue) {
        if (poissonBuilder_ == null) {
          load_ = builderForValue.build();
          onChanged();
        } else {
          poissonBuilder_.setMessage(builderForValue.build());
        }
        loadCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      public Builder mergePoisson(io.grpc.benchmarks.proto.Control.PoissonParams value) {
        if (poissonBuilder_ == null) {
          if (loadCase_ == 2 &&
              load_ != io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance()) {
            load_ = io.grpc.benchmarks.proto.Control.PoissonParams.newBuilder((io.grpc.benchmarks.proto.Control.PoissonParams) load_)
                .mergeFrom(value).buildPartial();
          } else {
            load_ = value;
          }
          onChanged();
        } else {
          if (loadCase_ == 2) {
            poissonBuilder_.mergeFrom(value);
          }
          poissonBuilder_.setMessage(value);
        }
        loadCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      public Builder clearPoisson() {
        if (poissonBuilder_ == null) {
          if (loadCase_ == 2) {
            loadCase_ = 0;
            load_ = null;
            onChanged();
          }
        } else {
          if (loadCase_ == 2) {
            loadCase_ = 0;
            load_ = null;
          }
          poissonBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.PoissonParams.Builder getPoissonBuilder() {
        return getPoissonFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.PoissonParamsOrBuilder getPoissonOrBuilder() {
        if ((loadCase_ == 2) && (poissonBuilder_ != null)) {
          return poissonBuilder_.getMessageOrBuilder();
        } else {
          if (loadCase_ == 2) {
            return (io.grpc.benchmarks.proto.Control.PoissonParams) load_;
          }
          return io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.PoissonParams poisson = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.PoissonParams, io.grpc.benchmarks.proto.Control.PoissonParams.Builder, io.grpc.benchmarks.proto.Control.PoissonParamsOrBuilder> 
          getPoissonFieldBuilder() {
        if (poissonBuilder_ == null) {
          if (!(loadCase_ == 2)) {
            load_ = io.grpc.benchmarks.proto.Control.PoissonParams.getDefaultInstance();
          }
          poissonBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.PoissonParams, io.grpc.benchmarks.proto.Control.PoissonParams.Builder, io.grpc.benchmarks.proto.Control.PoissonParamsOrBuilder>(
                  (io.grpc.benchmarks.proto.Control.PoissonParams) load_,
                  getParentForChildren(),
                  isClean());
          load_ = null;
        }
        loadCase_ = 2;
        onChanged();;
        return poissonBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.LoadParams)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.LoadParams)
    private static final io.grpc.benchmarks.proto.Control.LoadParams DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.LoadParams();
    }

    public static io.grpc.benchmarks.proto.Control.LoadParams getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.LoadParams getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SecurityParamsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.SecurityParams)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool use_test_ca = 1;</code>
     */
    boolean getUseTestCa();

    /**
     * <code>string server_host_override = 2;</code>
     */
    java.lang.String getServerHostOverride();
    /**
     * <code>string server_host_override = 2;</code>
     */
    com.google.protobuf.ByteString
        getServerHostOverrideBytes();
  }
  /**
   * <pre>
   * presence of SecurityParams implies use of TLS
   * </pre>
   *
   * Protobuf type {@code grpc.testing.SecurityParams}
   */
  public  static final class SecurityParams extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.SecurityParams)
      SecurityParamsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SecurityParams.newBuilder() to construct.
    private SecurityParams(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SecurityParams() {
      useTestCa_ = false;
      serverHostOverride_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SecurityParams(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {

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

              serverHostOverride_ = 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_SecurityParams_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_SecurityParams_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.SecurityParams.class, io.grpc.benchmarks.proto.Control.SecurityParams.Builder.class);
    }

    public static final int USE_TEST_CA_FIELD_NUMBER = 1;
    private boolean useTestCa_;
    /**
     * <code>bool use_test_ca = 1;</code>
     */
    public boolean getUseTestCa() {
      return useTestCa_;
    }

    public static final int SERVER_HOST_OVERRIDE_FIELD_NUMBER = 2;
    private volatile java.lang.Object serverHostOverride_;
    /**
     * <code>string server_host_override = 2;</code>
     */
    public java.lang.String getServerHostOverride() {
      java.lang.Object ref = serverHostOverride_;
      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();
        serverHostOverride_ = s;
        return s;
      }
    }
    /**
     * <code>string server_host_override = 2;</code>
     */
    public com.google.protobuf.ByteString
        getServerHostOverrideBytes() {
      java.lang.Object ref = serverHostOverride_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serverHostOverride_ = 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 {
      if (useTestCa_ != false) {
        output.writeBool(1, useTestCa_);
      }
      if (!getServerHostOverrideBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, serverHostOverride_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (useTestCa_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, useTestCa_);
      }
      if (!getServerHostOverrideBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, serverHostOverride_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.SecurityParams)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.SecurityParams other = (io.grpc.benchmarks.proto.Control.SecurityParams) obj;

      boolean result = true;
      result = result && (getUseTestCa()
          == other.getUseTestCa());
      result = result && getServerHostOverride()
          .equals(other.getServerHostOverride());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + USE_TEST_CA_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getUseTestCa());
      hash = (37 * hash) + SERVER_HOST_OVERRIDE_FIELD_NUMBER;
      hash = (53 * hash) + getServerHostOverride().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.SecurityParams parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams 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 io.grpc.benchmarks.proto.Control.SecurityParams parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams 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 io.grpc.benchmarks.proto.Control.SecurityParams parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.SecurityParams 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(io.grpc.benchmarks.proto.Control.SecurityParams 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;
    }
    /**
     * <pre>
     * presence of SecurityParams implies use of TLS
     * </pre>
     *
     * Protobuf type {@code grpc.testing.SecurityParams}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.SecurityParams)
        io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_SecurityParams_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_SecurityParams_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.SecurityParams.class, io.grpc.benchmarks.proto.Control.SecurityParams.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.SecurityParams.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        useTestCa_ = false;

        serverHostOverride_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_SecurityParams_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.SecurityParams getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.SecurityParams.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.SecurityParams build() {
        io.grpc.benchmarks.proto.Control.SecurityParams result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.SecurityParams buildPartial() {
        io.grpc.benchmarks.proto.Control.SecurityParams result = new io.grpc.benchmarks.proto.Control.SecurityParams(this);
        result.useTestCa_ = useTestCa_;
        result.serverHostOverride_ = serverHostOverride_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.SecurityParams) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.SecurityParams)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.SecurityParams other) {
        if (other == io.grpc.benchmarks.proto.Control.SecurityParams.getDefaultInstance()) return this;
        if (other.getUseTestCa() != false) {
          setUseTestCa(other.getUseTestCa());
        }
        if (!other.getServerHostOverride().isEmpty()) {
          serverHostOverride_ = other.serverHostOverride_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.SecurityParams parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.SecurityParams) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean useTestCa_ ;
      /**
       * <code>bool use_test_ca = 1;</code>
       */
      public boolean getUseTestCa() {
        return useTestCa_;
      }
      /**
       * <code>bool use_test_ca = 1;</code>
       */
      public Builder setUseTestCa(boolean value) {
        
        useTestCa_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool use_test_ca = 1;</code>
       */
      public Builder clearUseTestCa() {
        
        useTestCa_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object serverHostOverride_ = "";
      /**
       * <code>string server_host_override = 2;</code>
       */
      public java.lang.String getServerHostOverride() {
        java.lang.Object ref = serverHostOverride_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          serverHostOverride_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string server_host_override = 2;</code>
       */
      public com.google.protobuf.ByteString
          getServerHostOverrideBytes() {
        java.lang.Object ref = serverHostOverride_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serverHostOverride_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string server_host_override = 2;</code>
       */
      public Builder setServerHostOverride(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        serverHostOverride_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string server_host_override = 2;</code>
       */
      public Builder clearServerHostOverride() {
        
        serverHostOverride_ = getDefaultInstance().getServerHostOverride();
        onChanged();
        return this;
      }
      /**
       * <code>string server_host_override = 2;</code>
       */
      public Builder setServerHostOverrideBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        serverHostOverride_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.SecurityParams)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.SecurityParams)
    private static final io.grpc.benchmarks.proto.Control.SecurityParams DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.SecurityParams();
    }

    public static io.grpc.benchmarks.proto.Control.SecurityParams getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.SecurityParams getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ChannelArgOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ChannelArg)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>string str_value = 2;</code>
     */
    java.lang.String getStrValue();
    /**
     * <code>string str_value = 2;</code>
     */
    com.google.protobuf.ByteString
        getStrValueBytes();

    /**
     * <code>int32 int_value = 3;</code>
     */
    int getIntValue();

    public io.grpc.benchmarks.proto.Control.ChannelArg.ValueCase getValueCase();
  }
  /**
   * Protobuf type {@code grpc.testing.ChannelArg}
   */
  public  static final class ChannelArg extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ChannelArg)
      ChannelArgOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ChannelArg.newBuilder() to construct.
    private ChannelArg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ChannelArg() {
      name_ = "";
    }

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

              name_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              valueCase_ = 2;
              value_ = s;
              break;
            }
            case 24: {
              valueCase_ = 3;
              value_ = input.readInt32();
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ChannelArg_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ChannelArg_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ChannelArg.class, io.grpc.benchmarks.proto.Control.ChannelArg.Builder.class);
    }

    private int valueCase_ = 0;
    private java.lang.Object value_;
    public enum ValueCase
        implements com.google.protobuf.Internal.EnumLite {
      STR_VALUE(2),
      INT_VALUE(3),
      VALUE_NOT_SET(0);
      private final int value;
      private ValueCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ValueCase valueOf(int value) {
        return forNumber(value);
      }

      public static ValueCase forNumber(int value) {
        switch (value) {
          case 2: return STR_VALUE;
          case 3: return INT_VALUE;
          case 0: return VALUE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ValueCase
    getValueCase() {
      return ValueCase.forNumber(
          valueCase_);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     */
    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;
      }
    }
    /**
     * <code>string name = 1;</code>
     */
    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 STR_VALUE_FIELD_NUMBER = 2;
    /**
     * <code>string str_value = 2;</code>
     */
    public java.lang.String getStrValue() {
      java.lang.Object ref = "";
      if (valueCase_ == 2) {
        ref = value_;
      }
      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();
        if (valueCase_ == 2) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string str_value = 2;</code>
     */
    public com.google.protobuf.ByteString
        getStrValueBytes() {
      java.lang.Object ref = "";
      if (valueCase_ == 2) {
        ref = value_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (valueCase_ == 2) {
          value_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INT_VALUE_FIELD_NUMBER = 3;
    /**
     * <code>int32 int_value = 3;</code>
     */
    public int getIntValue() {
      if (valueCase_ == 3) {
        return (java.lang.Integer) value_;
      }
      return 0;
    }

    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 {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (valueCase_ == 2) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
      }
      if (valueCase_ == 3) {
        output.writeInt32(
            3, (int)((java.lang.Integer) value_));
      }
      unknownFields.writeTo(output);
    }

    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 (valueCase_ == 2) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
      }
      if (valueCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              3, (int)((java.lang.Integer) value_));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ChannelArg)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ChannelArg other = (io.grpc.benchmarks.proto.Control.ChannelArg) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getValueCase().equals(
          other.getValueCase());
      if (!result) return false;
      switch (valueCase_) {
        case 2:
          result = result && getStrValue()
              .equals(other.getStrValue());
          break;
        case 3:
          result = result && (getIntValue()
              == other.getIntValue());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      switch (valueCase_) {
        case 2:
          hash = (37 * hash) + STR_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStrValue().hashCode();
          break;
        case 3:
          hash = (37 * hash) + INT_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getIntValue();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ChannelArg parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg 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 io.grpc.benchmarks.proto.Control.ChannelArg parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg 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 io.grpc.benchmarks.proto.Control.ChannelArg parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ChannelArg 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(io.grpc.benchmarks.proto.Control.ChannelArg 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;
    }
    /**
     * Protobuf type {@code grpc.testing.ChannelArg}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ChannelArg)
        io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ChannelArg_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ChannelArg_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ChannelArg.class, io.grpc.benchmarks.proto.Control.ChannelArg.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ChannelArg.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        valueCase_ = 0;
        value_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ChannelArg_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ChannelArg getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ChannelArg.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ChannelArg build() {
        io.grpc.benchmarks.proto.Control.ChannelArg result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ChannelArg buildPartial() {
        io.grpc.benchmarks.proto.Control.ChannelArg result = new io.grpc.benchmarks.proto.Control.ChannelArg(this);
        result.name_ = name_;
        if (valueCase_ == 2) {
          result.value_ = value_;
        }
        if (valueCase_ == 3) {
          result.value_ = value_;
        }
        result.valueCase_ = valueCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ChannelArg) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ChannelArg)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ChannelArg other) {
        if (other == io.grpc.benchmarks.proto.Control.ChannelArg.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        switch (other.getValueCase()) {
          case STR_VALUE: {
            valueCase_ = 2;
            value_ = other.value_;
            onChanged();
            break;
          }
          case INT_VALUE: {
            setIntValue(other.getIntValue());
            break;
          }
          case VALUE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ChannelArg parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ChannelArg) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int valueCase_ = 0;
      private java.lang.Object value_;
      public ValueCase
          getValueCase() {
        return ValueCase.forNumber(
            valueCase_);
      }

      public Builder clearValue() {
        valueCase_ = 0;
        value_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       */
      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;
        }
      }
      /**
       * <code>string name = 1;</code>
       */
      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;
        }
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>string str_value = 2;</code>
       */
      public java.lang.String getStrValue() {
        java.lang.Object ref = "";
        if (valueCase_ == 2) {
          ref = value_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (valueCase_ == 2) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string str_value = 2;</code>
       */
      public com.google.protobuf.ByteString
          getStrValueBytes() {
        java.lang.Object ref = "";
        if (valueCase_ == 2) {
          ref = value_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (valueCase_ == 2) {
            value_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string str_value = 2;</code>
       */
      public Builder setStrValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  valueCase_ = 2;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string str_value = 2;</code>
       */
      public Builder clearStrValue() {
        if (valueCase_ == 2) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string str_value = 2;</code>
       */
      public Builder setStrValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        valueCase_ = 2;
        value_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>int32 int_value = 3;</code>
       */
      public int getIntValue() {
        if (valueCase_ == 3) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * <code>int32 int_value = 3;</code>
       */
      public Builder setIntValue(int value) {
        valueCase_ = 3;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 int_value = 3;</code>
       */
      public Builder clearIntValue() {
        if (valueCase_ == 3) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ChannelArg)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ChannelArg)
    private static final io.grpc.benchmarks.proto.Control.ChannelArg DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ChannelArg();
    }

    public static io.grpc.benchmarks.proto.Control.ChannelArg getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ChannelArg getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClientConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ClientConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * List of targets to connect to. At least one target needs to be specified.
     * </pre>
     *
     * <code>repeated string server_targets = 1;</code>
     */
    java.util.List<java.lang.String>
        getServerTargetsList();
    /**
     * <pre>
     * List of targets to connect to. At least one target needs to be specified.
     * </pre>
     *
     * <code>repeated string server_targets = 1;</code>
     */
    int getServerTargetsCount();
    /**
     * <pre>
     * List of targets to connect to. At least one target needs to be specified.
     * </pre>
     *
     * <code>repeated string server_targets = 1;</code>
     */
    java.lang.String getServerTargets(int index);
    /**
     * <pre>
     * List of targets to connect to. At least one target needs to be specified.
     * </pre>
     *
     * <code>repeated string server_targets = 1;</code>
     */
    com.google.protobuf.ByteString
        getServerTargetsBytes(int index);

    /**
     * <code>.grpc.testing.ClientType client_type = 2;</code>
     */
    int getClientTypeValue();
    /**
     * <code>.grpc.testing.ClientType client_type = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.ClientType getClientType();

    /**
     * <code>.grpc.testing.SecurityParams security_params = 3;</code>
     */
    boolean hasSecurityParams();
    /**
     * <code>.grpc.testing.SecurityParams security_params = 3;</code>
     */
    io.grpc.benchmarks.proto.Control.SecurityParams getSecurityParams();
    /**
     * <code>.grpc.testing.SecurityParams security_params = 3;</code>
     */
    io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder getSecurityParamsOrBuilder();

    /**
     * <pre>
     * How many concurrent RPCs to start for each channel.
     * For synchronous client, use a separate thread for each outstanding RPC.
     * </pre>
     *
     * <code>int32 outstanding_rpcs_per_channel = 4;</code>
     */
    int getOutstandingRpcsPerChannel();

    /**
     * <pre>
     * Number of independent client channels to create.
     * i-th channel will connect to server_target[i % server_targets.size()]
     * </pre>
     *
     * <code>int32 client_channels = 5;</code>
     */
    int getClientChannels();

    /**
     * <pre>
     * Only for async client. Number of threads to use to start/manage RPCs.
     * </pre>
     *
     * <code>int32 async_client_threads = 7;</code>
     */
    int getAsyncClientThreads();

    /**
     * <code>.grpc.testing.RpcType rpc_type = 8;</code>
     */
    int getRpcTypeValue();
    /**
     * <code>.grpc.testing.RpcType rpc_type = 8;</code>
     */
    io.grpc.benchmarks.proto.Control.RpcType getRpcType();

    /**
     * <pre>
     * The requested load for the entire client (aggregated over all the threads).
     * </pre>
     *
     * <code>.grpc.testing.LoadParams load_params = 10;</code>
     */
    boolean hasLoadParams();
    /**
     * <pre>
     * The requested load for the entire client (aggregated over all the threads).
     * </pre>
     *
     * <code>.grpc.testing.LoadParams load_params = 10;</code>
     */
    io.grpc.benchmarks.proto.Control.LoadParams getLoadParams();
    /**
     * <pre>
     * The requested load for the entire client (aggregated over all the threads).
     * </pre>
     *
     * <code>.grpc.testing.LoadParams load_params = 10;</code>
     */
    io.grpc.benchmarks.proto.Control.LoadParamsOrBuilder getLoadParamsOrBuilder();

    /**
     * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
     */
    boolean hasPayloadConfig();
    /**
     * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
     */
    io.grpc.benchmarks.proto.Payloads.PayloadConfig getPayloadConfig();
    /**
     * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
     */
    io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder getPayloadConfigOrBuilder();

    /**
     * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
     */
    boolean hasHistogramParams();
    /**
     * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
     */
    io.grpc.benchmarks.proto.Stats.HistogramParams getHistogramParams();
    /**
     * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
     */
    io.grpc.benchmarks.proto.Stats.HistogramParamsOrBuilder getHistogramParamsOrBuilder();

    /**
     * <pre>
     * Specify the cores we should run the client on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 13;</code>
     */
    java.util.List<java.lang.Integer> getCoreListList();
    /**
     * <pre>
     * Specify the cores we should run the client on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 13;</code>
     */
    int getCoreListCount();
    /**
     * <pre>
     * Specify the cores we should run the client on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 13;</code>
     */
    int getCoreList(int index);

    /**
     * <code>int32 core_limit = 14;</code>
     */
    int getCoreLimit();

    /**
     * <pre>
     * If we use an OTHER_CLIENT client_type, this string gives more detail
     * </pre>
     *
     * <code>string other_client_api = 15;</code>
     */
    java.lang.String getOtherClientApi();
    /**
     * <pre>
     * If we use an OTHER_CLIENT client_type, this string gives more detail
     * </pre>
     *
     * <code>string other_client_api = 15;</code>
     */
    com.google.protobuf.ByteString
        getOtherClientApiBytes();

    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    java.util.List<io.grpc.benchmarks.proto.Control.ChannelArg> 
        getChannelArgsList();
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    io.grpc.benchmarks.proto.Control.ChannelArg getChannelArgs(int index);
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    int getChannelArgsCount();
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    java.util.List<? extends io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder> 
        getChannelArgsOrBuilderList();
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder getChannelArgsOrBuilder(
        int index);

    /**
     * <pre>
     * Number of messages on a stream before it gets finished/restarted
     * </pre>
     *
     * <code>int32 messages_per_stream = 18;</code>
     */
    int getMessagesPerStream();
  }
  /**
   * Protobuf type {@code grpc.testing.ClientConfig}
   */
  public  static final class ClientConfig extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ClientConfig)
      ClientConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClientConfig.newBuilder() to construct.
    private ClientConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClientConfig() {
      serverTargets_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      clientType_ = 0;
      outstandingRpcsPerChannel_ = 0;
      clientChannels_ = 0;
      asyncClientThreads_ = 0;
      rpcType_ = 0;
      coreList_ = java.util.Collections.emptyList();
      coreLimit_ = 0;
      otherClientApi_ = "";
      channelArgs_ = java.util.Collections.emptyList();
      messagesPerStream_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClientConfig(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                serverTargets_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              serverTargets_.add(s);
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              clientType_ = rawValue;
              break;
            }
            case 26: {
              io.grpc.benchmarks.proto.Control.SecurityParams.Builder subBuilder = null;
              if (securityParams_ != null) {
                subBuilder = securityParams_.toBuilder();
              }
              securityParams_ = input.readMessage(io.grpc.benchmarks.proto.Control.SecurityParams.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(securityParams_);
                securityParams_ = subBuilder.buildPartial();
              }

              break;
            }
            case 32: {

              outstandingRpcsPerChannel_ = input.readInt32();
              break;
            }
            case 40: {

              clientChannels_ = input.readInt32();
              break;
            }
            case 56: {

              asyncClientThreads_ = input.readInt32();
              break;
            }
            case 64: {
              int rawValue = input.readEnum();

              rpcType_ = rawValue;
              break;
            }
            case 82: {
              io.grpc.benchmarks.proto.Control.LoadParams.Builder subBuilder = null;
              if (loadParams_ != null) {
                subBuilder = loadParams_.toBuilder();
              }
              loadParams_ = input.readMessage(io.grpc.benchmarks.proto.Control.LoadParams.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(loadParams_);
                loadParams_ = subBuilder.buildPartial();
              }

              break;
            }
            case 90: {
              io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder subBuilder = null;
              if (payloadConfig_ != null) {
                subBuilder = payloadConfig_.toBuilder();
              }
              payloadConfig_ = input.readMessage(io.grpc.benchmarks.proto.Payloads.PayloadConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(payloadConfig_);
                payloadConfig_ = subBuilder.buildPartial();
              }

              break;
            }
            case 98: {
              io.grpc.benchmarks.proto.Stats.HistogramParams.Builder subBuilder = null;
              if (histogramParams_ != null) {
                subBuilder = histogramParams_.toBuilder();
              }
              histogramParams_ = input.readMessage(io.grpc.benchmarks.proto.Stats.HistogramParams.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(histogramParams_);
                histogramParams_ = subBuilder.buildPartial();
              }

              break;
            }
            case 104: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                coreList_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000400;
              }
              coreList_.add(input.readInt32());
              break;
            }
            case 106: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400) && input.getBytesUntilLimit() > 0) {
                coreList_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000400;
              }
              while (input.getBytesUntilLimit() > 0) {
                coreList_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 112: {

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

              otherClientApi_ = s;
              break;
            }
            case 130: {
              if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                channelArgs_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Control.ChannelArg>();
                mutable_bitField0_ |= 0x00002000;
              }
              channelArgs_.add(
                  input.readMessage(io.grpc.benchmarks.proto.Control.ChannelArg.parser(), extensionRegistry));
              break;
            }
            case 144: {

              messagesPerStream_ = input.readInt32();
              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_ & 0x00000001) == 0x00000001)) {
          serverTargets_ = serverTargets_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          coreList_ = java.util.Collections.unmodifiableList(coreList_);
        }
        if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
          channelArgs_ = java.util.Collections.unmodifiableList(channelArgs_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientConfig_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ClientConfig.class, io.grpc.benchmarks.proto.Control.ClientConfig.Builder.class);
    }

    private int bitField0_;
    public static final int SERVER_TARGETS_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList serverTargets_;
    /**
     * <pre>
     * List of targets to connect to. At least one target needs to be specified.
     * </pre>
     *
     * <code>repeated string server_targets = 1;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getServerTargetsList() {
      return serverTargets_;
    }
    /**
     * <pre>
     * List of targets to connect to. At least one target needs to be specified.
     * </pre>
     *
     * <code>repeated string server_targets = 1;</code>
     */
    public int getServerTargetsCount() {
      return serverTargets_.size();
    }
    /**
     * <pre>
     * List of targets to connect to. At least one target needs to be specified.
     * </pre>
     *
     * <code>repeated string server_targets = 1;</code>
     */
    public java.lang.String getServerTargets(int index) {
      return serverTargets_.get(index);
    }
    /**
     * <pre>
     * List of targets to connect to. At least one target needs to be specified.
     * </pre>
     *
     * <code>repeated string server_targets = 1;</code>
     */
    public com.google.protobuf.ByteString
        getServerTargetsBytes(int index) {
      return serverTargets_.getByteString(index);
    }

    public static final int CLIENT_TYPE_FIELD_NUMBER = 2;
    private int clientType_;
    /**
     * <code>.grpc.testing.ClientType client_type = 2;</code>
     */
    public int getClientTypeValue() {
      return clientType_;
    }
    /**
     * <code>.grpc.testing.ClientType client_type = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.ClientType getClientType() {
      io.grpc.benchmarks.proto.Control.ClientType result = io.grpc.benchmarks.proto.Control.ClientType.valueOf(clientType_);
      return result == null ? io.grpc.benchmarks.proto.Control.ClientType.UNRECOGNIZED : result;
    }

    public static final int SECURITY_PARAMS_FIELD_NUMBER = 3;
    private io.grpc.benchmarks.proto.Control.SecurityParams securityParams_;
    /**
     * <code>.grpc.testing.SecurityParams security_params = 3;</code>
     */
    public boolean hasSecurityParams() {
      return securityParams_ != null;
    }
    /**
     * <code>.grpc.testing.SecurityParams security_params = 3;</code>
     */
    public io.grpc.benchmarks.proto.Control.SecurityParams getSecurityParams() {
      return securityParams_ == null ? io.grpc.benchmarks.proto.Control.SecurityParams.getDefaultInstance() : securityParams_;
    }
    /**
     * <code>.grpc.testing.SecurityParams security_params = 3;</code>
     */
    public io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder getSecurityParamsOrBuilder() {
      return getSecurityParams();
    }

    public static final int OUTSTANDING_RPCS_PER_CHANNEL_FIELD_NUMBER = 4;
    private int outstandingRpcsPerChannel_;
    /**
     * <pre>
     * How many concurrent RPCs to start for each channel.
     * For synchronous client, use a separate thread for each outstanding RPC.
     * </pre>
     *
     * <code>int32 outstanding_rpcs_per_channel = 4;</code>
     */
    public int getOutstandingRpcsPerChannel() {
      return outstandingRpcsPerChannel_;
    }

    public static final int CLIENT_CHANNELS_FIELD_NUMBER = 5;
    private int clientChannels_;
    /**
     * <pre>
     * Number of independent client channels to create.
     * i-th channel will connect to server_target[i % server_targets.size()]
     * </pre>
     *
     * <code>int32 client_channels = 5;</code>
     */
    public int getClientChannels() {
      return clientChannels_;
    }

    public static final int ASYNC_CLIENT_THREADS_FIELD_NUMBER = 7;
    private int asyncClientThreads_;
    /**
     * <pre>
     * Only for async client. Number of threads to use to start/manage RPCs.
     * </pre>
     *
     * <code>int32 async_client_threads = 7;</code>
     */
    public int getAsyncClientThreads() {
      return asyncClientThreads_;
    }

    public static final int RPC_TYPE_FIELD_NUMBER = 8;
    private int rpcType_;
    /**
     * <code>.grpc.testing.RpcType rpc_type = 8;</code>
     */
    public int getRpcTypeValue() {
      return rpcType_;
    }
    /**
     * <code>.grpc.testing.RpcType rpc_type = 8;</code>
     */
    public io.grpc.benchmarks.proto.Control.RpcType getRpcType() {
      io.grpc.benchmarks.proto.Control.RpcType result = io.grpc.benchmarks.proto.Control.RpcType.valueOf(rpcType_);
      return result == null ? io.grpc.benchmarks.proto.Control.RpcType.UNRECOGNIZED : result;
    }

    public static final int LOAD_PARAMS_FIELD_NUMBER = 10;
    private io.grpc.benchmarks.proto.Control.LoadParams loadParams_;
    /**
     * <pre>
     * The requested load for the entire client (aggregated over all the threads).
     * </pre>
     *
     * <code>.grpc.testing.LoadParams load_params = 10;</code>
     */
    public boolean hasLoadParams() {
      return loadParams_ != null;
    }
    /**
     * <pre>
     * The requested load for the entire client (aggregated over all the threads).
     * </pre>
     *
     * <code>.grpc.testing.LoadParams load_params = 10;</code>
     */
    public io.grpc.benchmarks.proto.Control.LoadParams getLoadParams() {
      return loadParams_ == null ? io.grpc.benchmarks.proto.Control.LoadParams.getDefaultInstance() : loadParams_;
    }
    /**
     * <pre>
     * The requested load for the entire client (aggregated over all the threads).
     * </pre>
     *
     * <code>.grpc.testing.LoadParams load_params = 10;</code>
     */
    public io.grpc.benchmarks.proto.Control.LoadParamsOrBuilder getLoadParamsOrBuilder() {
      return getLoadParams();
    }

    public static final int PAYLOAD_CONFIG_FIELD_NUMBER = 11;
    private io.grpc.benchmarks.proto.Payloads.PayloadConfig payloadConfig_;
    /**
     * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
     */
    public boolean hasPayloadConfig() {
      return payloadConfig_ != null;
    }
    /**
     * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
     */
    public io.grpc.benchmarks.proto.Payloads.PayloadConfig getPayloadConfig() {
      return payloadConfig_ == null ? io.grpc.benchmarks.proto.Payloads.PayloadConfig.getDefaultInstance() : payloadConfig_;
    }
    /**
     * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
     */
    public io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder getPayloadConfigOrBuilder() {
      return getPayloadConfig();
    }

    public static final int HISTOGRAM_PARAMS_FIELD_NUMBER = 12;
    private io.grpc.benchmarks.proto.Stats.HistogramParams histogramParams_;
    /**
     * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
     */
    public boolean hasHistogramParams() {
      return histogramParams_ != null;
    }
    /**
     * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
     */
    public io.grpc.benchmarks.proto.Stats.HistogramParams getHistogramParams() {
      return histogramParams_ == null ? io.grpc.benchmarks.proto.Stats.HistogramParams.getDefaultInstance() : histogramParams_;
    }
    /**
     * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
     */
    public io.grpc.benchmarks.proto.Stats.HistogramParamsOrBuilder getHistogramParamsOrBuilder() {
      return getHistogramParams();
    }

    public static final int CORE_LIST_FIELD_NUMBER = 13;
    private java.util.List<java.lang.Integer> coreList_;
    /**
     * <pre>
     * Specify the cores we should run the client on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 13;</code>
     */
    public java.util.List<java.lang.Integer>
        getCoreListList() {
      return coreList_;
    }
    /**
     * <pre>
     * Specify the cores we should run the client on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 13;</code>
     */
    public int getCoreListCount() {
      return coreList_.size();
    }
    /**
     * <pre>
     * Specify the cores we should run the client on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 13;</code>
     */
    public int getCoreList(int index) {
      return coreList_.get(index);
    }
    private int coreListMemoizedSerializedSize = -1;

    public static final int CORE_LIMIT_FIELD_NUMBER = 14;
    private int coreLimit_;
    /**
     * <code>int32 core_limit = 14;</code>
     */
    public int getCoreLimit() {
      return coreLimit_;
    }

    public static final int OTHER_CLIENT_API_FIELD_NUMBER = 15;
    private volatile java.lang.Object otherClientApi_;
    /**
     * <pre>
     * If we use an OTHER_CLIENT client_type, this string gives more detail
     * </pre>
     *
     * <code>string other_client_api = 15;</code>
     */
    public java.lang.String getOtherClientApi() {
      java.lang.Object ref = otherClientApi_;
      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();
        otherClientApi_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * If we use an OTHER_CLIENT client_type, this string gives more detail
     * </pre>
     *
     * <code>string other_client_api = 15;</code>
     */
    public com.google.protobuf.ByteString
        getOtherClientApiBytes() {
      java.lang.Object ref = otherClientApi_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        otherClientApi_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CHANNEL_ARGS_FIELD_NUMBER = 16;
    private java.util.List<io.grpc.benchmarks.proto.Control.ChannelArg> channelArgs_;
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    public java.util.List<io.grpc.benchmarks.proto.Control.ChannelArg> getChannelArgsList() {
      return channelArgs_;
    }
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    public java.util.List<? extends io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder> 
        getChannelArgsOrBuilderList() {
      return channelArgs_;
    }
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    public int getChannelArgsCount() {
      return channelArgs_.size();
    }
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    public io.grpc.benchmarks.proto.Control.ChannelArg getChannelArgs(int index) {
      return channelArgs_.get(index);
    }
    /**
     * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
     */
    public io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder getChannelArgsOrBuilder(
        int index) {
      return channelArgs_.get(index);
    }

    public static final int MESSAGES_PER_STREAM_FIELD_NUMBER = 18;
    private int messagesPerStream_;
    /**
     * <pre>
     * Number of messages on a stream before it gets finished/restarted
     * </pre>
     *
     * <code>int32 messages_per_stream = 18;</code>
     */
    public int getMessagesPerStream() {
      return messagesPerStream_;
    }

    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();
      for (int i = 0; i < serverTargets_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, serverTargets_.getRaw(i));
      }
      if (clientType_ != io.grpc.benchmarks.proto.Control.ClientType.SYNC_CLIENT.getNumber()) {
        output.writeEnum(2, clientType_);
      }
      if (securityParams_ != null) {
        output.writeMessage(3, getSecurityParams());
      }
      if (outstandingRpcsPerChannel_ != 0) {
        output.writeInt32(4, outstandingRpcsPerChannel_);
      }
      if (clientChannels_ != 0) {
        output.writeInt32(5, clientChannels_);
      }
      if (asyncClientThreads_ != 0) {
        output.writeInt32(7, asyncClientThreads_);
      }
      if (rpcType_ != io.grpc.benchmarks.proto.Control.RpcType.UNARY.getNumber()) {
        output.writeEnum(8, rpcType_);
      }
      if (loadParams_ != null) {
        output.writeMessage(10, getLoadParams());
      }
      if (payloadConfig_ != null) {
        output.writeMessage(11, getPayloadConfig());
      }
      if (histogramParams_ != null) {
        output.writeMessage(12, getHistogramParams());
      }
      if (getCoreListList().size() > 0) {
        output.writeUInt32NoTag(106);
        output.writeUInt32NoTag(coreListMemoizedSerializedSize);
      }
      for (int i = 0; i < coreList_.size(); i++) {
        output.writeInt32NoTag(coreList_.get(i));
      }
      if (coreLimit_ != 0) {
        output.writeInt32(14, coreLimit_);
      }
      if (!getOtherClientApiBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, otherClientApi_);
      }
      for (int i = 0; i < channelArgs_.size(); i++) {
        output.writeMessage(16, channelArgs_.get(i));
      }
      if (messagesPerStream_ != 0) {
        output.writeInt32(18, messagesPerStream_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < serverTargets_.size(); i++) {
          dataSize += computeStringSizeNoTag(serverTargets_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getServerTargetsList().size();
      }
      if (clientType_ != io.grpc.benchmarks.proto.Control.ClientType.SYNC_CLIENT.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, clientType_);
      }
      if (securityParams_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSecurityParams());
      }
      if (outstandingRpcsPerChannel_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, outstandingRpcsPerChannel_);
      }
      if (clientChannels_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, clientChannels_);
      }
      if (asyncClientThreads_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, asyncClientThreads_);
      }
      if (rpcType_ != io.grpc.benchmarks.proto.Control.RpcType.UNARY.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(8, rpcType_);
      }
      if (loadParams_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getLoadParams());
      }
      if (payloadConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getPayloadConfig());
      }
      if (histogramParams_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getHistogramParams());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < coreList_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(coreList_.get(i));
        }
        size += dataSize;
        if (!getCoreListList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        coreListMemoizedSerializedSize = dataSize;
      }
      if (coreLimit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(14, coreLimit_);
      }
      if (!getOtherClientApiBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, otherClientApi_);
      }
      for (int i = 0; i < channelArgs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, channelArgs_.get(i));
      }
      if (messagesPerStream_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(18, messagesPerStream_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ClientConfig)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ClientConfig other = (io.grpc.benchmarks.proto.Control.ClientConfig) obj;

      boolean result = true;
      result = result && getServerTargetsList()
          .equals(other.getServerTargetsList());
      result = result && clientType_ == other.clientType_;
      result = result && (hasSecurityParams() == other.hasSecurityParams());
      if (hasSecurityParams()) {
        result = result && getSecurityParams()
            .equals(other.getSecurityParams());
      }
      result = result && (getOutstandingRpcsPerChannel()
          == other.getOutstandingRpcsPerChannel());
      result = result && (getClientChannels()
          == other.getClientChannels());
      result = result && (getAsyncClientThreads()
          == other.getAsyncClientThreads());
      result = result && rpcType_ == other.rpcType_;
      result = result && (hasLoadParams() == other.hasLoadParams());
      if (hasLoadParams()) {
        result = result && getLoadParams()
            .equals(other.getLoadParams());
      }
      result = result && (hasPayloadConfig() == other.hasPayloadConfig());
      if (hasPayloadConfig()) {
        result = result && getPayloadConfig()
            .equals(other.getPayloadConfig());
      }
      result = result && (hasHistogramParams() == other.hasHistogramParams());
      if (hasHistogramParams()) {
        result = result && getHistogramParams()
            .equals(other.getHistogramParams());
      }
      result = result && getCoreListList()
          .equals(other.getCoreListList());
      result = result && (getCoreLimit()
          == other.getCoreLimit());
      result = result && getOtherClientApi()
          .equals(other.getOtherClientApi());
      result = result && getChannelArgsList()
          .equals(other.getChannelArgsList());
      result = result && (getMessagesPerStream()
          == other.getMessagesPerStream());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getServerTargetsCount() > 0) {
        hash = (37 * hash) + SERVER_TARGETS_FIELD_NUMBER;
        hash = (53 * hash) + getServerTargetsList().hashCode();
      }
      hash = (37 * hash) + CLIENT_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + clientType_;
      if (hasSecurityParams()) {
        hash = (37 * hash) + SECURITY_PARAMS_FIELD_NUMBER;
        hash = (53 * hash) + getSecurityParams().hashCode();
      }
      hash = (37 * hash) + OUTSTANDING_RPCS_PER_CHANNEL_FIELD_NUMBER;
      hash = (53 * hash) + getOutstandingRpcsPerChannel();
      hash = (37 * hash) + CLIENT_CHANNELS_FIELD_NUMBER;
      hash = (53 * hash) + getClientChannels();
      hash = (37 * hash) + ASYNC_CLIENT_THREADS_FIELD_NUMBER;
      hash = (53 * hash) + getAsyncClientThreads();
      hash = (37 * hash) + RPC_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + rpcType_;
      if (hasLoadParams()) {
        hash = (37 * hash) + LOAD_PARAMS_FIELD_NUMBER;
        hash = (53 * hash) + getLoadParams().hashCode();
      }
      if (hasPayloadConfig()) {
        hash = (37 * hash) + PAYLOAD_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getPayloadConfig().hashCode();
      }
      if (hasHistogramParams()) {
        hash = (37 * hash) + HISTOGRAM_PARAMS_FIELD_NUMBER;
        hash = (53 * hash) + getHistogramParams().hashCode();
      }
      if (getCoreListCount() > 0) {
        hash = (37 * hash) + CORE_LIST_FIELD_NUMBER;
        hash = (53 * hash) + getCoreListList().hashCode();
      }
      hash = (37 * hash) + CORE_LIMIT_FIELD_NUMBER;
      hash = (53 * hash) + getCoreLimit();
      hash = (37 * hash) + OTHER_CLIENT_API_FIELD_NUMBER;
      hash = (53 * hash) + getOtherClientApi().hashCode();
      if (getChannelArgsCount() > 0) {
        hash = (37 * hash) + CHANNEL_ARGS_FIELD_NUMBER;
        hash = (53 * hash) + getChannelArgsList().hashCode();
      }
      hash = (37 * hash) + MESSAGES_PER_STREAM_FIELD_NUMBER;
      hash = (53 * hash) + getMessagesPerStream();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ClientConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig 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 io.grpc.benchmarks.proto.Control.ClientConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig 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 io.grpc.benchmarks.proto.Control.ClientConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientConfig 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(io.grpc.benchmarks.proto.Control.ClientConfig 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;
    }
    /**
     * Protobuf type {@code grpc.testing.ClientConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ClientConfig)
        io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientConfig_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ClientConfig.class, io.grpc.benchmarks.proto.Control.ClientConfig.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ClientConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getChannelArgsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        serverTargets_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        clientType_ = 0;

        if (securityParamsBuilder_ == null) {
          securityParams_ = null;
        } else {
          securityParams_ = null;
          securityParamsBuilder_ = null;
        }
        outstandingRpcsPerChannel_ = 0;

        clientChannels_ = 0;

        asyncClientThreads_ = 0;

        rpcType_ = 0;

        if (loadParamsBuilder_ == null) {
          loadParams_ = null;
        } else {
          loadParams_ = null;
          loadParamsBuilder_ = null;
        }
        if (payloadConfigBuilder_ == null) {
          payloadConfig_ = null;
        } else {
          payloadConfig_ = null;
          payloadConfigBuilder_ = null;
        }
        if (histogramParamsBuilder_ == null) {
          histogramParams_ = null;
        } else {
          histogramParams_ = null;
          histogramParamsBuilder_ = null;
        }
        coreList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000400);
        coreLimit_ = 0;

        otherClientApi_ = "";

        if (channelArgsBuilder_ == null) {
          channelArgs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
        } else {
          channelArgsBuilder_.clear();
        }
        messagesPerStream_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientConfig_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ClientConfig getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ClientConfig build() {
        io.grpc.benchmarks.proto.Control.ClientConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ClientConfig buildPartial() {
        io.grpc.benchmarks.proto.Control.ClientConfig result = new io.grpc.benchmarks.proto.Control.ClientConfig(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          serverTargets_ = serverTargets_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.serverTargets_ = serverTargets_;
        result.clientType_ = clientType_;
        if (securityParamsBuilder_ == null) {
          result.securityParams_ = securityParams_;
        } else {
          result.securityParams_ = securityParamsBuilder_.build();
        }
        result.outstandingRpcsPerChannel_ = outstandingRpcsPerChannel_;
        result.clientChannels_ = clientChannels_;
        result.asyncClientThreads_ = asyncClientThreads_;
        result.rpcType_ = rpcType_;
        if (loadParamsBuilder_ == null) {
          result.loadParams_ = loadParams_;
        } else {
          result.loadParams_ = loadParamsBuilder_.build();
        }
        if (payloadConfigBuilder_ == null) {
          result.payloadConfig_ = payloadConfig_;
        } else {
          result.payloadConfig_ = payloadConfigBuilder_.build();
        }
        if (histogramParamsBuilder_ == null) {
          result.histogramParams_ = histogramParams_;
        } else {
          result.histogramParams_ = histogramParamsBuilder_.build();
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          coreList_ = java.util.Collections.unmodifiableList(coreList_);
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.coreList_ = coreList_;
        result.coreLimit_ = coreLimit_;
        result.otherClientApi_ = otherClientApi_;
        if (channelArgsBuilder_ == null) {
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            channelArgs_ = java.util.Collections.unmodifiableList(channelArgs_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.channelArgs_ = channelArgs_;
        } else {
          result.channelArgs_ = channelArgsBuilder_.build();
        }
        result.messagesPerStream_ = messagesPerStream_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ClientConfig) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ClientConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ClientConfig other) {
        if (other == io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance()) return this;
        if (!other.serverTargets_.isEmpty()) {
          if (serverTargets_.isEmpty()) {
            serverTargets_ = other.serverTargets_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureServerTargetsIsMutable();
            serverTargets_.addAll(other.serverTargets_);
          }
          onChanged();
        }
        if (other.clientType_ != 0) {
          setClientTypeValue(other.getClientTypeValue());
        }
        if (other.hasSecurityParams()) {
          mergeSecurityParams(other.getSecurityParams());
        }
        if (other.getOutstandingRpcsPerChannel() != 0) {
          setOutstandingRpcsPerChannel(other.getOutstandingRpcsPerChannel());
        }
        if (other.getClientChannels() != 0) {
          setClientChannels(other.getClientChannels());
        }
        if (other.getAsyncClientThreads() != 0) {
          setAsyncClientThreads(other.getAsyncClientThreads());
        }
        if (other.rpcType_ != 0) {
          setRpcTypeValue(other.getRpcTypeValue());
        }
        if (other.hasLoadParams()) {
          mergeLoadParams(other.getLoadParams());
        }
        if (other.hasPayloadConfig()) {
          mergePayloadConfig(other.getPayloadConfig());
        }
        if (other.hasHistogramParams()) {
          mergeHistogramParams(other.getHistogramParams());
        }
        if (!other.coreList_.isEmpty()) {
          if (coreList_.isEmpty()) {
            coreList_ = other.coreList_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureCoreListIsMutable();
            coreList_.addAll(other.coreList_);
          }
          onChanged();
        }
        if (other.getCoreLimit() != 0) {
          setCoreLimit(other.getCoreLimit());
        }
        if (!other.getOtherClientApi().isEmpty()) {
          otherClientApi_ = other.otherClientApi_;
          onChanged();
        }
        if (channelArgsBuilder_ == null) {
          if (!other.channelArgs_.isEmpty()) {
            if (channelArgs_.isEmpty()) {
              channelArgs_ = other.channelArgs_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureChannelArgsIsMutable();
              channelArgs_.addAll(other.channelArgs_);
            }
            onChanged();
          }
        } else {
          if (!other.channelArgs_.isEmpty()) {
            if (channelArgsBuilder_.isEmpty()) {
              channelArgsBuilder_.dispose();
              channelArgsBuilder_ = null;
              channelArgs_ = other.channelArgs_;
              bitField0_ = (bitField0_ & ~0x00002000);
              channelArgsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getChannelArgsFieldBuilder() : null;
            } else {
              channelArgsBuilder_.addAllMessages(other.channelArgs_);
            }
          }
        }
        if (other.getMessagesPerStream() != 0) {
          setMessagesPerStream(other.getMessagesPerStream());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ClientConfig parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ClientConfig) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList serverTargets_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureServerTargetsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          serverTargets_ = new com.google.protobuf.LazyStringArrayList(serverTargets_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getServerTargetsList() {
        return serverTargets_.getUnmodifiableView();
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public int getServerTargetsCount() {
        return serverTargets_.size();
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public java.lang.String getServerTargets(int index) {
        return serverTargets_.get(index);
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public com.google.protobuf.ByteString
          getServerTargetsBytes(int index) {
        return serverTargets_.getByteString(index);
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public Builder setServerTargets(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureServerTargetsIsMutable();
        serverTargets_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public Builder addServerTargets(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureServerTargetsIsMutable();
        serverTargets_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public Builder addAllServerTargets(
          java.lang.Iterable<java.lang.String> values) {
        ensureServerTargetsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, serverTargets_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public Builder clearServerTargets() {
        serverTargets_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of targets to connect to. At least one target needs to be specified.
       * </pre>
       *
       * <code>repeated string server_targets = 1;</code>
       */
      public Builder addServerTargetsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureServerTargetsIsMutable();
        serverTargets_.add(value);
        onChanged();
        return this;
      }

      private int clientType_ = 0;
      /**
       * <code>.grpc.testing.ClientType client_type = 2;</code>
       */
      public int getClientTypeValue() {
        return clientType_;
      }
      /**
       * <code>.grpc.testing.ClientType client_type = 2;</code>
       */
      public Builder setClientTypeValue(int value) {
        clientType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.grpc.testing.ClientType client_type = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClientType getClientType() {
        io.grpc.benchmarks.proto.Control.ClientType result = io.grpc.benchmarks.proto.Control.ClientType.valueOf(clientType_);
        return result == null ? io.grpc.benchmarks.proto.Control.ClientType.UNRECOGNIZED : result;
      }
      /**
       * <code>.grpc.testing.ClientType client_type = 2;</code>
       */
      public Builder setClientType(io.grpc.benchmarks.proto.Control.ClientType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        clientType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.grpc.testing.ClientType client_type = 2;</code>
       */
      public Builder clearClientType() {
        
        clientType_ = 0;
        onChanged();
        return this;
      }

      private io.grpc.benchmarks.proto.Control.SecurityParams securityParams_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.SecurityParams, io.grpc.benchmarks.proto.Control.SecurityParams.Builder, io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder> securityParamsBuilder_;
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      public boolean hasSecurityParams() {
        return securityParamsBuilder_ != null || securityParams_ != null;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      public io.grpc.benchmarks.proto.Control.SecurityParams getSecurityParams() {
        if (securityParamsBuilder_ == null) {
          return securityParams_ == null ? io.grpc.benchmarks.proto.Control.SecurityParams.getDefaultInstance() : securityParams_;
        } else {
          return securityParamsBuilder_.getMessage();
        }
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      public Builder setSecurityParams(io.grpc.benchmarks.proto.Control.SecurityParams value) {
        if (securityParamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          securityParams_ = value;
          onChanged();
        } else {
          securityParamsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      public Builder setSecurityParams(
          io.grpc.benchmarks.proto.Control.SecurityParams.Builder builderForValue) {
        if (securityParamsBuilder_ == null) {
          securityParams_ = builderForValue.build();
          onChanged();
        } else {
          securityParamsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      public Builder mergeSecurityParams(io.grpc.benchmarks.proto.Control.SecurityParams value) {
        if (securityParamsBuilder_ == null) {
          if (securityParams_ != null) {
            securityParams_ =
              io.grpc.benchmarks.proto.Control.SecurityParams.newBuilder(securityParams_).mergeFrom(value).buildPartial();
          } else {
            securityParams_ = value;
          }
          onChanged();
        } else {
          securityParamsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      public Builder clearSecurityParams() {
        if (securityParamsBuilder_ == null) {
          securityParams_ = null;
          onChanged();
        } else {
          securityParams_ = null;
          securityParamsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      public io.grpc.benchmarks.proto.Control.SecurityParams.Builder getSecurityParamsBuilder() {
        
        onChanged();
        return getSecurityParamsFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      public io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder getSecurityParamsOrBuilder() {
        if (securityParamsBuilder_ != null) {
          return securityParamsBuilder_.getMessageOrBuilder();
        } else {
          return securityParams_ == null ?
              io.grpc.benchmarks.proto.Control.SecurityParams.getDefaultInstance() : securityParams_;
        }
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.SecurityParams, io.grpc.benchmarks.proto.Control.SecurityParams.Builder, io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder> 
          getSecurityParamsFieldBuilder() {
        if (securityParamsBuilder_ == null) {
          securityParamsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.SecurityParams, io.grpc.benchmarks.proto.Control.SecurityParams.Builder, io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder>(
                  getSecurityParams(),
                  getParentForChildren(),
                  isClean());
          securityParams_ = null;
        }
        return securityParamsBuilder_;
      }

      private int outstandingRpcsPerChannel_ ;
      /**
       * <pre>
       * How many concurrent RPCs to start for each channel.
       * For synchronous client, use a separate thread for each outstanding RPC.
       * </pre>
       *
       * <code>int32 outstanding_rpcs_per_channel = 4;</code>
       */
      public int getOutstandingRpcsPerChannel() {
        return outstandingRpcsPerChannel_;
      }
      /**
       * <pre>
       * How many concurrent RPCs to start for each channel.
       * For synchronous client, use a separate thread for each outstanding RPC.
       * </pre>
       *
       * <code>int32 outstanding_rpcs_per_channel = 4;</code>
       */
      public Builder setOutstandingRpcsPerChannel(int value) {
        
        outstandingRpcsPerChannel_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * How many concurrent RPCs to start for each channel.
       * For synchronous client, use a separate thread for each outstanding RPC.
       * </pre>
       *
       * <code>int32 outstanding_rpcs_per_channel = 4;</code>
       */
      public Builder clearOutstandingRpcsPerChannel() {
        
        outstandingRpcsPerChannel_ = 0;
        onChanged();
        return this;
      }

      private int clientChannels_ ;
      /**
       * <pre>
       * Number of independent client channels to create.
       * i-th channel will connect to server_target[i % server_targets.size()]
       * </pre>
       *
       * <code>int32 client_channels = 5;</code>
       */
      public int getClientChannels() {
        return clientChannels_;
      }
      /**
       * <pre>
       * Number of independent client channels to create.
       * i-th channel will connect to server_target[i % server_targets.size()]
       * </pre>
       *
       * <code>int32 client_channels = 5;</code>
       */
      public Builder setClientChannels(int value) {
        
        clientChannels_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of independent client channels to create.
       * i-th channel will connect to server_target[i % server_targets.size()]
       * </pre>
       *
       * <code>int32 client_channels = 5;</code>
       */
      public Builder clearClientChannels() {
        
        clientChannels_ = 0;
        onChanged();
        return this;
      }

      private int asyncClientThreads_ ;
      /**
       * <pre>
       * Only for async client. Number of threads to use to start/manage RPCs.
       * </pre>
       *
       * <code>int32 async_client_threads = 7;</code>
       */
      public int getAsyncClientThreads() {
        return asyncClientThreads_;
      }
      /**
       * <pre>
       * Only for async client. Number of threads to use to start/manage RPCs.
       * </pre>
       *
       * <code>int32 async_client_threads = 7;</code>
       */
      public Builder setAsyncClientThreads(int value) {
        
        asyncClientThreads_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only for async client. Number of threads to use to start/manage RPCs.
       * </pre>
       *
       * <code>int32 async_client_threads = 7;</code>
       */
      public Builder clearAsyncClientThreads() {
        
        asyncClientThreads_ = 0;
        onChanged();
        return this;
      }

      private int rpcType_ = 0;
      /**
       * <code>.grpc.testing.RpcType rpc_type = 8;</code>
       */
      public int getRpcTypeValue() {
        return rpcType_;
      }
      /**
       * <code>.grpc.testing.RpcType rpc_type = 8;</code>
       */
      public Builder setRpcTypeValue(int value) {
        rpcType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.grpc.testing.RpcType rpc_type = 8;</code>
       */
      public io.grpc.benchmarks.proto.Control.RpcType getRpcType() {
        io.grpc.benchmarks.proto.Control.RpcType result = io.grpc.benchmarks.proto.Control.RpcType.valueOf(rpcType_);
        return result == null ? io.grpc.benchmarks.proto.Control.RpcType.UNRECOGNIZED : result;
      }
      /**
       * <code>.grpc.testing.RpcType rpc_type = 8;</code>
       */
      public Builder setRpcType(io.grpc.benchmarks.proto.Control.RpcType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        rpcType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.grpc.testing.RpcType rpc_type = 8;</code>
       */
      public Builder clearRpcType() {
        
        rpcType_ = 0;
        onChanged();
        return this;
      }

      private io.grpc.benchmarks.proto.Control.LoadParams loadParams_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.LoadParams, io.grpc.benchmarks.proto.Control.LoadParams.Builder, io.grpc.benchmarks.proto.Control.LoadParamsOrBuilder> loadParamsBuilder_;
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      public boolean hasLoadParams() {
        return loadParamsBuilder_ != null || loadParams_ != null;
      }
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      public io.grpc.benchmarks.proto.Control.LoadParams getLoadParams() {
        if (loadParamsBuilder_ == null) {
          return loadParams_ == null ? io.grpc.benchmarks.proto.Control.LoadParams.getDefaultInstance() : loadParams_;
        } else {
          return loadParamsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      public Builder setLoadParams(io.grpc.benchmarks.proto.Control.LoadParams value) {
        if (loadParamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          loadParams_ = value;
          onChanged();
        } else {
          loadParamsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      public Builder setLoadParams(
          io.grpc.benchmarks.proto.Control.LoadParams.Builder builderForValue) {
        if (loadParamsBuilder_ == null) {
          loadParams_ = builderForValue.build();
          onChanged();
        } else {
          loadParamsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      public Builder mergeLoadParams(io.grpc.benchmarks.proto.Control.LoadParams value) {
        if (loadParamsBuilder_ == null) {
          if (loadParams_ != null) {
            loadParams_ =
              io.grpc.benchmarks.proto.Control.LoadParams.newBuilder(loadParams_).mergeFrom(value).buildPartial();
          } else {
            loadParams_ = value;
          }
          onChanged();
        } else {
          loadParamsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      public Builder clearLoadParams() {
        if (loadParamsBuilder_ == null) {
          loadParams_ = null;
          onChanged();
        } else {
          loadParams_ = null;
          loadParamsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      public io.grpc.benchmarks.proto.Control.LoadParams.Builder getLoadParamsBuilder() {
        
        onChanged();
        return getLoadParamsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      public io.grpc.benchmarks.proto.Control.LoadParamsOrBuilder getLoadParamsOrBuilder() {
        if (loadParamsBuilder_ != null) {
          return loadParamsBuilder_.getMessageOrBuilder();
        } else {
          return loadParams_ == null ?
              io.grpc.benchmarks.proto.Control.LoadParams.getDefaultInstance() : loadParams_;
        }
      }
      /**
       * <pre>
       * The requested load for the entire client (aggregated over all the threads).
       * </pre>
       *
       * <code>.grpc.testing.LoadParams load_params = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.LoadParams, io.grpc.benchmarks.proto.Control.LoadParams.Builder, io.grpc.benchmarks.proto.Control.LoadParamsOrBuilder> 
          getLoadParamsFieldBuilder() {
        if (loadParamsBuilder_ == null) {
          loadParamsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.LoadParams, io.grpc.benchmarks.proto.Control.LoadParams.Builder, io.grpc.benchmarks.proto.Control.LoadParamsOrBuilder>(
                  getLoadParams(),
                  getParentForChildren(),
                  isClean());
          loadParams_ = null;
        }
        return loadParamsBuilder_;
      }

      private io.grpc.benchmarks.proto.Payloads.PayloadConfig payloadConfig_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Payloads.PayloadConfig, io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder, io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder> payloadConfigBuilder_;
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      public boolean hasPayloadConfig() {
        return payloadConfigBuilder_ != null || payloadConfig_ != null;
      }
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      public io.grpc.benchmarks.proto.Payloads.PayloadConfig getPayloadConfig() {
        if (payloadConfigBuilder_ == null) {
          return payloadConfig_ == null ? io.grpc.benchmarks.proto.Payloads.PayloadConfig.getDefaultInstance() : payloadConfig_;
        } else {
          return payloadConfigBuilder_.getMessage();
        }
      }
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      public Builder setPayloadConfig(io.grpc.benchmarks.proto.Payloads.PayloadConfig value) {
        if (payloadConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payloadConfig_ = value;
          onChanged();
        } else {
          payloadConfigBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      public Builder setPayloadConfig(
          io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder builderForValue) {
        if (payloadConfigBuilder_ == null) {
          payloadConfig_ = builderForValue.build();
          onChanged();
        } else {
          payloadConfigBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      public Builder mergePayloadConfig(io.grpc.benchmarks.proto.Payloads.PayloadConfig value) {
        if (payloadConfigBuilder_ == null) {
          if (payloadConfig_ != null) {
            payloadConfig_ =
              io.grpc.benchmarks.proto.Payloads.PayloadConfig.newBuilder(payloadConfig_).mergeFrom(value).buildPartial();
          } else {
            payloadConfig_ = value;
          }
          onChanged();
        } else {
          payloadConfigBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      public Builder clearPayloadConfig() {
        if (payloadConfigBuilder_ == null) {
          payloadConfig_ = null;
          onChanged();
        } else {
          payloadConfig_ = null;
          payloadConfigBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      public io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder getPayloadConfigBuilder() {
        
        onChanged();
        return getPayloadConfigFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      public io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder getPayloadConfigOrBuilder() {
        if (payloadConfigBuilder_ != null) {
          return payloadConfigBuilder_.getMessageOrBuilder();
        } else {
          return payloadConfig_ == null ?
              io.grpc.benchmarks.proto.Payloads.PayloadConfig.getDefaultInstance() : payloadConfig_;
        }
      }
      /**
       * <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Payloads.PayloadConfig, io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder, io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder> 
          getPayloadConfigFieldBuilder() {
        if (payloadConfigBuilder_ == null) {
          payloadConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Payloads.PayloadConfig, io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder, io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder>(
                  getPayloadConfig(),
                  getParentForChildren(),
                  isClean());
          payloadConfig_ = null;
        }
        return payloadConfigBuilder_;
      }

      private io.grpc.benchmarks.proto.Stats.HistogramParams histogramParams_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.HistogramParams, io.grpc.benchmarks.proto.Stats.HistogramParams.Builder, io.grpc.benchmarks.proto.Stats.HistogramParamsOrBuilder> histogramParamsBuilder_;
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      public boolean hasHistogramParams() {
        return histogramParamsBuilder_ != null || histogramParams_ != null;
      }
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      public io.grpc.benchmarks.proto.Stats.HistogramParams getHistogramParams() {
        if (histogramParamsBuilder_ == null) {
          return histogramParams_ == null ? io.grpc.benchmarks.proto.Stats.HistogramParams.getDefaultInstance() : histogramParams_;
        } else {
          return histogramParamsBuilder_.getMessage();
        }
      }
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      public Builder setHistogramParams(io.grpc.benchmarks.proto.Stats.HistogramParams value) {
        if (histogramParamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          histogramParams_ = value;
          onChanged();
        } else {
          histogramParamsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      public Builder setHistogramParams(
          io.grpc.benchmarks.proto.Stats.HistogramParams.Builder builderForValue) {
        if (histogramParamsBuilder_ == null) {
          histogramParams_ = builderForValue.build();
          onChanged();
        } else {
          histogramParamsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      public Builder mergeHistogramParams(io.grpc.benchmarks.proto.Stats.HistogramParams value) {
        if (histogramParamsBuilder_ == null) {
          if (histogramParams_ != null) {
            histogramParams_ =
              io.grpc.benchmarks.proto.Stats.HistogramParams.newBuilder(histogramParams_).mergeFrom(value).buildPartial();
          } else {
            histogramParams_ = value;
          }
          onChanged();
        } else {
          histogramParamsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      public Builder clearHistogramParams() {
        if (histogramParamsBuilder_ == null) {
          histogramParams_ = null;
          onChanged();
        } else {
          histogramParams_ = null;
          histogramParamsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      public io.grpc.benchmarks.proto.Stats.HistogramParams.Builder getHistogramParamsBuilder() {
        
        onChanged();
        return getHistogramParamsFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      public io.grpc.benchmarks.proto.Stats.HistogramParamsOrBuilder getHistogramParamsOrBuilder() {
        if (histogramParamsBuilder_ != null) {
          return histogramParamsBuilder_.getMessageOrBuilder();
        } else {
          return histogramParams_ == null ?
              io.grpc.benchmarks.proto.Stats.HistogramParams.getDefaultInstance() : histogramParams_;
        }
      }
      /**
       * <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.HistogramParams, io.grpc.benchmarks.proto.Stats.HistogramParams.Builder, io.grpc.benchmarks.proto.Stats.HistogramParamsOrBuilder> 
          getHistogramParamsFieldBuilder() {
        if (histogramParamsBuilder_ == null) {
          histogramParamsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Stats.HistogramParams, io.grpc.benchmarks.proto.Stats.HistogramParams.Builder, io.grpc.benchmarks.proto.Stats.HistogramParamsOrBuilder>(
                  getHistogramParams(),
                  getParentForChildren(),
                  isClean());
          histogramParams_ = null;
        }
        return histogramParamsBuilder_;
      }

      private java.util.List<java.lang.Integer> coreList_ = java.util.Collections.emptyList();
      private void ensureCoreListIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          coreList_ = new java.util.ArrayList<java.lang.Integer>(coreList_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * <pre>
       * Specify the cores we should run the client on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 13;</code>
       */
      public java.util.List<java.lang.Integer>
          getCoreListList() {
        return java.util.Collections.unmodifiableList(coreList_);
      }
      /**
       * <pre>
       * Specify the cores we should run the client on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 13;</code>
       */
      public int getCoreListCount() {
        return coreList_.size();
      }
      /**
       * <pre>
       * Specify the cores we should run the client on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 13;</code>
       */
      public int getCoreList(int index) {
        return coreList_.get(index);
      }
      /**
       * <pre>
       * Specify the cores we should run the client on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 13;</code>
       */
      public Builder setCoreList(
          int index, int value) {
        ensureCoreListIsMutable();
        coreList_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify the cores we should run the client on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 13;</code>
       */
      public Builder addCoreList(int value) {
        ensureCoreListIsMutable();
        coreList_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify the cores we should run the client on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 13;</code>
       */
      public Builder addAllCoreList(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureCoreListIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, coreList_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify the cores we should run the client on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 13;</code>
       */
      public Builder clearCoreList() {
        coreList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }

      private int coreLimit_ ;
      /**
       * <code>int32 core_limit = 14;</code>
       */
      public int getCoreLimit() {
        return coreLimit_;
      }
      /**
       * <code>int32 core_limit = 14;</code>
       */
      public Builder setCoreLimit(int value) {
        
        coreLimit_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 core_limit = 14;</code>
       */
      public Builder clearCoreLimit() {
        
        coreLimit_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object otherClientApi_ = "";
      /**
       * <pre>
       * If we use an OTHER_CLIENT client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_client_api = 15;</code>
       */
      public java.lang.String getOtherClientApi() {
        java.lang.Object ref = otherClientApi_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          otherClientApi_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * If we use an OTHER_CLIENT client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_client_api = 15;</code>
       */
      public com.google.protobuf.ByteString
          getOtherClientApiBytes() {
        java.lang.Object ref = otherClientApi_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          otherClientApi_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * If we use an OTHER_CLIENT client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_client_api = 15;</code>
       */
      public Builder setOtherClientApi(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        otherClientApi_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If we use an OTHER_CLIENT client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_client_api = 15;</code>
       */
      public Builder clearOtherClientApi() {
        
        otherClientApi_ = getDefaultInstance().getOtherClientApi();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If we use an OTHER_CLIENT client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_client_api = 15;</code>
       */
      public Builder setOtherClientApiBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        otherClientApi_ = value;
        onChanged();
        return this;
      }

      private java.util.List<io.grpc.benchmarks.proto.Control.ChannelArg> channelArgs_ =
        java.util.Collections.emptyList();
      private void ensureChannelArgsIsMutable() {
        if (!((bitField0_ & 0x00002000) == 0x00002000)) {
          channelArgs_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Control.ChannelArg>(channelArgs_);
          bitField0_ |= 0x00002000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ChannelArg, io.grpc.benchmarks.proto.Control.ChannelArg.Builder, io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder> channelArgsBuilder_;

      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Control.ChannelArg> getChannelArgsList() {
        if (channelArgsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(channelArgs_);
        } else {
          return channelArgsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public int getChannelArgsCount() {
        if (channelArgsBuilder_ == null) {
          return channelArgs_.size();
        } else {
          return channelArgsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public io.grpc.benchmarks.proto.Control.ChannelArg getChannelArgs(int index) {
        if (channelArgsBuilder_ == null) {
          return channelArgs_.get(index);
        } else {
          return channelArgsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder setChannelArgs(
          int index, io.grpc.benchmarks.proto.Control.ChannelArg value) {
        if (channelArgsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChannelArgsIsMutable();
          channelArgs_.set(index, value);
          onChanged();
        } else {
          channelArgsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder setChannelArgs(
          int index, io.grpc.benchmarks.proto.Control.ChannelArg.Builder builderForValue) {
        if (channelArgsBuilder_ == null) {
          ensureChannelArgsIsMutable();
          channelArgs_.set(index, builderForValue.build());
          onChanged();
        } else {
          channelArgsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder addChannelArgs(io.grpc.benchmarks.proto.Control.ChannelArg value) {
        if (channelArgsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChannelArgsIsMutable();
          channelArgs_.add(value);
          onChanged();
        } else {
          channelArgsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder addChannelArgs(
          int index, io.grpc.benchmarks.proto.Control.ChannelArg value) {
        if (channelArgsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChannelArgsIsMutable();
          channelArgs_.add(index, value);
          onChanged();
        } else {
          channelArgsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder addChannelArgs(
          io.grpc.benchmarks.proto.Control.ChannelArg.Builder builderForValue) {
        if (channelArgsBuilder_ == null) {
          ensureChannelArgsIsMutable();
          channelArgs_.add(builderForValue.build());
          onChanged();
        } else {
          channelArgsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder addChannelArgs(
          int index, io.grpc.benchmarks.proto.Control.ChannelArg.Builder builderForValue) {
        if (channelArgsBuilder_ == null) {
          ensureChannelArgsIsMutable();
          channelArgs_.add(index, builderForValue.build());
          onChanged();
        } else {
          channelArgsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder addAllChannelArgs(
          java.lang.Iterable<? extends io.grpc.benchmarks.proto.Control.ChannelArg> values) {
        if (channelArgsBuilder_ == null) {
          ensureChannelArgsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, channelArgs_);
          onChanged();
        } else {
          channelArgsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder clearChannelArgs() {
        if (channelArgsBuilder_ == null) {
          channelArgs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
        } else {
          channelArgsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public Builder removeChannelArgs(int index) {
        if (channelArgsBuilder_ == null) {
          ensureChannelArgsIsMutable();
          channelArgs_.remove(index);
          onChanged();
        } else {
          channelArgsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public io.grpc.benchmarks.proto.Control.ChannelArg.Builder getChannelArgsBuilder(
          int index) {
        return getChannelArgsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder getChannelArgsOrBuilder(
          int index) {
        if (channelArgsBuilder_ == null) {
          return channelArgs_.get(index);  } else {
          return channelArgsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public java.util.List<? extends io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder> 
           getChannelArgsOrBuilderList() {
        if (channelArgsBuilder_ != null) {
          return channelArgsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(channelArgs_);
        }
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public io.grpc.benchmarks.proto.Control.ChannelArg.Builder addChannelArgsBuilder() {
        return getChannelArgsFieldBuilder().addBuilder(
            io.grpc.benchmarks.proto.Control.ChannelArg.getDefaultInstance());
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public io.grpc.benchmarks.proto.Control.ChannelArg.Builder addChannelArgsBuilder(
          int index) {
        return getChannelArgsFieldBuilder().addBuilder(
            index, io.grpc.benchmarks.proto.Control.ChannelArg.getDefaultInstance());
      }
      /**
       * <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Control.ChannelArg.Builder> 
           getChannelArgsBuilderList() {
        return getChannelArgsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ChannelArg, io.grpc.benchmarks.proto.Control.ChannelArg.Builder, io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder> 
          getChannelArgsFieldBuilder() {
        if (channelArgsBuilder_ == null) {
          channelArgsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.ChannelArg, io.grpc.benchmarks.proto.Control.ChannelArg.Builder, io.grpc.benchmarks.proto.Control.ChannelArgOrBuilder>(
                  channelArgs_,
                  ((bitField0_ & 0x00002000) == 0x00002000),
                  getParentForChildren(),
                  isClean());
          channelArgs_ = null;
        }
        return channelArgsBuilder_;
      }

      private int messagesPerStream_ ;
      /**
       * <pre>
       * Number of messages on a stream before it gets finished/restarted
       * </pre>
       *
       * <code>int32 messages_per_stream = 18;</code>
       */
      public int getMessagesPerStream() {
        return messagesPerStream_;
      }
      /**
       * <pre>
       * Number of messages on a stream before it gets finished/restarted
       * </pre>
       *
       * <code>int32 messages_per_stream = 18;</code>
       */
      public Builder setMessagesPerStream(int value) {
        
        messagesPerStream_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of messages on a stream before it gets finished/restarted
       * </pre>
       *
       * <code>int32 messages_per_stream = 18;</code>
       */
      public Builder clearMessagesPerStream() {
        
        messagesPerStream_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ClientConfig)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ClientConfig)
    private static final io.grpc.benchmarks.proto.Control.ClientConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ClientConfig();
    }

    public static io.grpc.benchmarks.proto.Control.ClientConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ClientConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClientStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ClientStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.grpc.testing.ClientStats stats = 1;</code>
     */
    boolean hasStats();
    /**
     * <code>.grpc.testing.ClientStats stats = 1;</code>
     */
    io.grpc.benchmarks.proto.Stats.ClientStats getStats();
    /**
     * <code>.grpc.testing.ClientStats stats = 1;</code>
     */
    io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder getStatsOrBuilder();
  }
  /**
   * Protobuf type {@code grpc.testing.ClientStatus}
   */
  public  static final class ClientStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ClientStatus)
      ClientStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClientStatus.newBuilder() to construct.
    private ClientStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClientStatus() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClientStatus(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.grpc.benchmarks.proto.Stats.ClientStats.Builder subBuilder = null;
              if (stats_ != null) {
                subBuilder = stats_.toBuilder();
              }
              stats_ = input.readMessage(io.grpc.benchmarks.proto.Stats.ClientStats.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(stats_);
                stats_ = subBuilder.buildPartial();
              }

              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientStatus_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ClientStatus.class, io.grpc.benchmarks.proto.Control.ClientStatus.Builder.class);
    }

    public static final int STATS_FIELD_NUMBER = 1;
    private io.grpc.benchmarks.proto.Stats.ClientStats stats_;
    /**
     * <code>.grpc.testing.ClientStats stats = 1;</code>
     */
    public boolean hasStats() {
      return stats_ != null;
    }
    /**
     * <code>.grpc.testing.ClientStats stats = 1;</code>
     */
    public io.grpc.benchmarks.proto.Stats.ClientStats getStats() {
      return stats_ == null ? io.grpc.benchmarks.proto.Stats.ClientStats.getDefaultInstance() : stats_;
    }
    /**
     * <code>.grpc.testing.ClientStats stats = 1;</code>
     */
    public io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder getStatsOrBuilder() {
      return getStats();
    }

    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 {
      if (stats_ != null) {
        output.writeMessage(1, getStats());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (stats_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStats());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ClientStatus)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ClientStatus other = (io.grpc.benchmarks.proto.Control.ClientStatus) obj;

      boolean result = true;
      result = result && (hasStats() == other.hasStats());
      if (hasStats()) {
        result = result && getStats()
            .equals(other.getStats());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStats()) {
        hash = (37 * hash) + STATS_FIELD_NUMBER;
        hash = (53 * hash) + getStats().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ClientStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus 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 io.grpc.benchmarks.proto.Control.ClientStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus 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 io.grpc.benchmarks.proto.Control.ClientStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientStatus 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(io.grpc.benchmarks.proto.Control.ClientStatus 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;
    }
    /**
     * Protobuf type {@code grpc.testing.ClientStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ClientStatus)
        io.grpc.benchmarks.proto.Control.ClientStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientStatus_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ClientStatus.class, io.grpc.benchmarks.proto.Control.ClientStatus.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ClientStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (statsBuilder_ == null) {
          stats_ = null;
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientStatus_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ClientStatus getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ClientStatus.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ClientStatus build() {
        io.grpc.benchmarks.proto.Control.ClientStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ClientStatus buildPartial() {
        io.grpc.benchmarks.proto.Control.ClientStatus result = new io.grpc.benchmarks.proto.Control.ClientStatus(this);
        if (statsBuilder_ == null) {
          result.stats_ = stats_;
        } else {
          result.stats_ = statsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ClientStatus) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ClientStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ClientStatus other) {
        if (other == io.grpc.benchmarks.proto.Control.ClientStatus.getDefaultInstance()) return this;
        if (other.hasStats()) {
          mergeStats(other.getStats());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ClientStatus parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ClientStatus) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private io.grpc.benchmarks.proto.Stats.ClientStats stats_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.ClientStats, io.grpc.benchmarks.proto.Stats.ClientStats.Builder, io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder> statsBuilder_;
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      public boolean hasStats() {
        return statsBuilder_ != null || stats_ != null;
      }
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ClientStats getStats() {
        if (statsBuilder_ == null) {
          return stats_ == null ? io.grpc.benchmarks.proto.Stats.ClientStats.getDefaultInstance() : stats_;
        } else {
          return statsBuilder_.getMessage();
        }
      }
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      public Builder setStats(io.grpc.benchmarks.proto.Stats.ClientStats value) {
        if (statsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stats_ = value;
          onChanged();
        } else {
          statsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      public Builder setStats(
          io.grpc.benchmarks.proto.Stats.ClientStats.Builder builderForValue) {
        if (statsBuilder_ == null) {
          stats_ = builderForValue.build();
          onChanged();
        } else {
          statsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      public Builder mergeStats(io.grpc.benchmarks.proto.Stats.ClientStats value) {
        if (statsBuilder_ == null) {
          if (stats_ != null) {
            stats_ =
              io.grpc.benchmarks.proto.Stats.ClientStats.newBuilder(stats_).mergeFrom(value).buildPartial();
          } else {
            stats_ = value;
          }
          onChanged();
        } else {
          statsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      public Builder clearStats() {
        if (statsBuilder_ == null) {
          stats_ = null;
          onChanged();
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ClientStats.Builder getStatsBuilder() {
        
        onChanged();
        return getStatsFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder getStatsOrBuilder() {
        if (statsBuilder_ != null) {
          return statsBuilder_.getMessageOrBuilder();
        } else {
          return stats_ == null ?
              io.grpc.benchmarks.proto.Stats.ClientStats.getDefaultInstance() : stats_;
        }
      }
      /**
       * <code>.grpc.testing.ClientStats stats = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.ClientStats, io.grpc.benchmarks.proto.Stats.ClientStats.Builder, io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder> 
          getStatsFieldBuilder() {
        if (statsBuilder_ == null) {
          statsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Stats.ClientStats, io.grpc.benchmarks.proto.Stats.ClientStats.Builder, io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder>(
                  getStats(),
                  getParentForChildren(),
                  isClean());
          stats_ = null;
        }
        return statsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ClientStatus)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ClientStatus)
    private static final io.grpc.benchmarks.proto.Control.ClientStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ClientStatus();
    }

    public static io.grpc.benchmarks.proto.Control.ClientStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ClientStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MarkOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.Mark)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * if true, the stats will be reset after taking their snapshot.
     * </pre>
     *
     * <code>bool reset = 1;</code>
     */
    boolean getReset();
  }
  /**
   * <pre>
   * Request current stats
   * </pre>
   *
   * Protobuf type {@code grpc.testing.Mark}
   */
  public  static final class Mark extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.Mark)
      MarkOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Mark.newBuilder() to construct.
    private Mark(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Mark() {
      reset_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Mark(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              reset_ = input.readBool();
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Mark_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Mark_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.Mark.class, io.grpc.benchmarks.proto.Control.Mark.Builder.class);
    }

    public static final int RESET_FIELD_NUMBER = 1;
    private boolean reset_;
    /**
     * <pre>
     * if true, the stats will be reset after taking their snapshot.
     * </pre>
     *
     * <code>bool reset = 1;</code>
     */
    public boolean getReset() {
      return reset_;
    }

    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 {
      if (reset_ != false) {
        output.writeBool(1, reset_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (reset_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, reset_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.Mark)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.Mark other = (io.grpc.benchmarks.proto.Control.Mark) obj;

      boolean result = true;
      result = result && (getReset()
          == other.getReset());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + RESET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getReset());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.Mark parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Mark parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Mark parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Mark parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Mark parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Mark parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Mark parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Mark 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 io.grpc.benchmarks.proto.Control.Mark parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Mark 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 io.grpc.benchmarks.proto.Control.Mark parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Mark 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(io.grpc.benchmarks.proto.Control.Mark 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;
    }
    /**
     * <pre>
     * Request current stats
     * </pre>
     *
     * Protobuf type {@code grpc.testing.Mark}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.Mark)
        io.grpc.benchmarks.proto.Control.MarkOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Mark_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Mark_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.Mark.class, io.grpc.benchmarks.proto.Control.Mark.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.Mark.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        reset_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Mark_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.Mark getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.Mark build() {
        io.grpc.benchmarks.proto.Control.Mark result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.Mark buildPartial() {
        io.grpc.benchmarks.proto.Control.Mark result = new io.grpc.benchmarks.proto.Control.Mark(this);
        result.reset_ = reset_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.Mark) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.Mark)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.Mark other) {
        if (other == io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance()) return this;
        if (other.getReset() != false) {
          setReset(other.getReset());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.Mark parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.Mark) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean reset_ ;
      /**
       * <pre>
       * if true, the stats will be reset after taking their snapshot.
       * </pre>
       *
       * <code>bool reset = 1;</code>
       */
      public boolean getReset() {
        return reset_;
      }
      /**
       * <pre>
       * if true, the stats will be reset after taking their snapshot.
       * </pre>
       *
       * <code>bool reset = 1;</code>
       */
      public Builder setReset(boolean value) {
        
        reset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * if true, the stats will be reset after taking their snapshot.
       * </pre>
       *
       * <code>bool reset = 1;</code>
       */
      public Builder clearReset() {
        
        reset_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.Mark)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.Mark)
    private static final io.grpc.benchmarks.proto.Control.Mark DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.Mark();
    }

    public static io.grpc.benchmarks.proto.Control.Mark getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.Mark getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClientArgsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ClientArgs)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.grpc.testing.ClientConfig setup = 1;</code>
     */
    boolean hasSetup();
    /**
     * <code>.grpc.testing.ClientConfig setup = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ClientConfig getSetup();
    /**
     * <code>.grpc.testing.ClientConfig setup = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder getSetupOrBuilder();

    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    boolean hasMark();
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.Mark getMark();
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.MarkOrBuilder getMarkOrBuilder();

    public io.grpc.benchmarks.proto.Control.ClientArgs.ArgtypeCase getArgtypeCase();
  }
  /**
   * Protobuf type {@code grpc.testing.ClientArgs}
   */
  public  static final class ClientArgs extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ClientArgs)
      ClientArgsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClientArgs.newBuilder() to construct.
    private ClientArgs(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClientArgs() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClientArgs(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.grpc.benchmarks.proto.Control.ClientConfig.Builder subBuilder = null;
              if (argtypeCase_ == 1) {
                subBuilder = ((io.grpc.benchmarks.proto.Control.ClientConfig) argtype_).toBuilder();
              }
              argtype_ =
                  input.readMessage(io.grpc.benchmarks.proto.Control.ClientConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.grpc.benchmarks.proto.Control.ClientConfig) argtype_);
                argtype_ = subBuilder.buildPartial();
              }
              argtypeCase_ = 1;
              break;
            }
            case 18: {
              io.grpc.benchmarks.proto.Control.Mark.Builder subBuilder = null;
              if (argtypeCase_ == 2) {
                subBuilder = ((io.grpc.benchmarks.proto.Control.Mark) argtype_).toBuilder();
              }
              argtype_ =
                  input.readMessage(io.grpc.benchmarks.proto.Control.Mark.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.grpc.benchmarks.proto.Control.Mark) argtype_);
                argtype_ = subBuilder.buildPartial();
              }
              argtypeCase_ = 2;
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientArgs_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientArgs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ClientArgs.class, io.grpc.benchmarks.proto.Control.ClientArgs.Builder.class);
    }

    private int argtypeCase_ = 0;
    private java.lang.Object argtype_;
    public enum ArgtypeCase
        implements com.google.protobuf.Internal.EnumLite {
      SETUP(1),
      MARK(2),
      ARGTYPE_NOT_SET(0);
      private final int value;
      private ArgtypeCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ArgtypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static ArgtypeCase forNumber(int value) {
        switch (value) {
          case 1: return SETUP;
          case 2: return MARK;
          case 0: return ARGTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ArgtypeCase
    getArgtypeCase() {
      return ArgtypeCase.forNumber(
          argtypeCase_);
    }

    public static final int SETUP_FIELD_NUMBER = 1;
    /**
     * <code>.grpc.testing.ClientConfig setup = 1;</code>
     */
    public boolean hasSetup() {
      return argtypeCase_ == 1;
    }
    /**
     * <code>.grpc.testing.ClientConfig setup = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ClientConfig getSetup() {
      if (argtypeCase_ == 1) {
         return (io.grpc.benchmarks.proto.Control.ClientConfig) argtype_;
      }
      return io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance();
    }
    /**
     * <code>.grpc.testing.ClientConfig setup = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder getSetupOrBuilder() {
      if (argtypeCase_ == 1) {
         return (io.grpc.benchmarks.proto.Control.ClientConfig) argtype_;
      }
      return io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance();
    }

    public static final int MARK_FIELD_NUMBER = 2;
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    public boolean hasMark() {
      return argtypeCase_ == 2;
    }
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.Mark getMark() {
      if (argtypeCase_ == 2) {
         return (io.grpc.benchmarks.proto.Control.Mark) argtype_;
      }
      return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
    }
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.MarkOrBuilder getMarkOrBuilder() {
      if (argtypeCase_ == 2) {
         return (io.grpc.benchmarks.proto.Control.Mark) argtype_;
      }
      return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
    }

    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 {
      if (argtypeCase_ == 1) {
        output.writeMessage(1, (io.grpc.benchmarks.proto.Control.ClientConfig) argtype_);
      }
      if (argtypeCase_ == 2) {
        output.writeMessage(2, (io.grpc.benchmarks.proto.Control.Mark) argtype_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (argtypeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (io.grpc.benchmarks.proto.Control.ClientConfig) argtype_);
      }
      if (argtypeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (io.grpc.benchmarks.proto.Control.Mark) argtype_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ClientArgs)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ClientArgs other = (io.grpc.benchmarks.proto.Control.ClientArgs) obj;

      boolean result = true;
      result = result && getArgtypeCase().equals(
          other.getArgtypeCase());
      if (!result) return false;
      switch (argtypeCase_) {
        case 1:
          result = result && getSetup()
              .equals(other.getSetup());
          break;
        case 2:
          result = result && getMark()
              .equals(other.getMark());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (argtypeCase_) {
        case 1:
          hash = (37 * hash) + SETUP_FIELD_NUMBER;
          hash = (53 * hash) + getSetup().hashCode();
          break;
        case 2:
          hash = (37 * hash) + MARK_FIELD_NUMBER;
          hash = (53 * hash) + getMark().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ClientArgs parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs 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 io.grpc.benchmarks.proto.Control.ClientArgs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs 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 io.grpc.benchmarks.proto.Control.ClientArgs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ClientArgs 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(io.grpc.benchmarks.proto.Control.ClientArgs 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;
    }
    /**
     * Protobuf type {@code grpc.testing.ClientArgs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ClientArgs)
        io.grpc.benchmarks.proto.Control.ClientArgsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientArgs_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientArgs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ClientArgs.class, io.grpc.benchmarks.proto.Control.ClientArgs.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ClientArgs.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        argtypeCase_ = 0;
        argtype_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ClientArgs_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ClientArgs getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ClientArgs.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ClientArgs build() {
        io.grpc.benchmarks.proto.Control.ClientArgs result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ClientArgs buildPartial() {
        io.grpc.benchmarks.proto.Control.ClientArgs result = new io.grpc.benchmarks.proto.Control.ClientArgs(this);
        if (argtypeCase_ == 1) {
          if (setupBuilder_ == null) {
            result.argtype_ = argtype_;
          } else {
            result.argtype_ = setupBuilder_.build();
          }
        }
        if (argtypeCase_ == 2) {
          if (markBuilder_ == null) {
            result.argtype_ = argtype_;
          } else {
            result.argtype_ = markBuilder_.build();
          }
        }
        result.argtypeCase_ = argtypeCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ClientArgs) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ClientArgs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ClientArgs other) {
        if (other == io.grpc.benchmarks.proto.Control.ClientArgs.getDefaultInstance()) return this;
        switch (other.getArgtypeCase()) {
          case SETUP: {
            mergeSetup(other.getSetup());
            break;
          }
          case MARK: {
            mergeMark(other.getMark());
            break;
          }
          case ARGTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ClientArgs parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ClientArgs) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int argtypeCase_ = 0;
      private java.lang.Object argtype_;
      public ArgtypeCase
          getArgtypeCase() {
        return ArgtypeCase.forNumber(
            argtypeCase_);
      }

      public Builder clearArgtype() {
        argtypeCase_ = 0;
        argtype_ = null;
        onChanged();
        return this;
      }


      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ClientConfig, io.grpc.benchmarks.proto.Control.ClientConfig.Builder, io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder> setupBuilder_;
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      public boolean hasSetup() {
        return argtypeCase_ == 1;
      }
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClientConfig getSetup() {
        if (setupBuilder_ == null) {
          if (argtypeCase_ == 1) {
            return (io.grpc.benchmarks.proto.Control.ClientConfig) argtype_;
          }
          return io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance();
        } else {
          if (argtypeCase_ == 1) {
            return setupBuilder_.getMessage();
          }
          return io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      public Builder setSetup(io.grpc.benchmarks.proto.Control.ClientConfig value) {
        if (setupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          argtype_ = value;
          onChanged();
        } else {
          setupBuilder_.setMessage(value);
        }
        argtypeCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      public Builder setSetup(
          io.grpc.benchmarks.proto.Control.ClientConfig.Builder builderForValue) {
        if (setupBuilder_ == null) {
          argtype_ = builderForValue.build();
          onChanged();
        } else {
          setupBuilder_.setMessage(builderForValue.build());
        }
        argtypeCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      public Builder mergeSetup(io.grpc.benchmarks.proto.Control.ClientConfig value) {
        if (setupBuilder_ == null) {
          if (argtypeCase_ == 1 &&
              argtype_ != io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance()) {
            argtype_ = io.grpc.benchmarks.proto.Control.ClientConfig.newBuilder((io.grpc.benchmarks.proto.Control.ClientConfig) argtype_)
                .mergeFrom(value).buildPartial();
          } else {
            argtype_ = value;
          }
          onChanged();
        } else {
          if (argtypeCase_ == 1) {
            setupBuilder_.mergeFrom(value);
          }
          setupBuilder_.setMessage(value);
        }
        argtypeCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      public Builder clearSetup() {
        if (setupBuilder_ == null) {
          if (argtypeCase_ == 1) {
            argtypeCase_ = 0;
            argtype_ = null;
            onChanged();
          }
        } else {
          if (argtypeCase_ == 1) {
            argtypeCase_ = 0;
            argtype_ = null;
          }
          setupBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClientConfig.Builder getSetupBuilder() {
        return getSetupFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder getSetupOrBuilder() {
        if ((argtypeCase_ == 1) && (setupBuilder_ != null)) {
          return setupBuilder_.getMessageOrBuilder();
        } else {
          if (argtypeCase_ == 1) {
            return (io.grpc.benchmarks.proto.Control.ClientConfig) argtype_;
          }
          return io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.ClientConfig setup = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ClientConfig, io.grpc.benchmarks.proto.Control.ClientConfig.Builder, io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder> 
          getSetupFieldBuilder() {
        if (setupBuilder_ == null) {
          if (!(argtypeCase_ == 1)) {
            argtype_ = io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance();
          }
          setupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.ClientConfig, io.grpc.benchmarks.proto.Control.ClientConfig.Builder, io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder>(
                  (io.grpc.benchmarks.proto.Control.ClientConfig) argtype_,
                  getParentForChildren(),
                  isClean());
          argtype_ = null;
        }
        argtypeCase_ = 1;
        onChanged();;
        return setupBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.Mark, io.grpc.benchmarks.proto.Control.Mark.Builder, io.grpc.benchmarks.proto.Control.MarkOrBuilder> markBuilder_;
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public boolean hasMark() {
        return argtypeCase_ == 2;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.Mark getMark() {
        if (markBuilder_ == null) {
          if (argtypeCase_ == 2) {
            return (io.grpc.benchmarks.proto.Control.Mark) argtype_;
          }
          return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
        } else {
          if (argtypeCase_ == 2) {
            return markBuilder_.getMessage();
          }
          return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public Builder setMark(io.grpc.benchmarks.proto.Control.Mark value) {
        if (markBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          argtype_ = value;
          onChanged();
        } else {
          markBuilder_.setMessage(value);
        }
        argtypeCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public Builder setMark(
          io.grpc.benchmarks.proto.Control.Mark.Builder builderForValue) {
        if (markBuilder_ == null) {
          argtype_ = builderForValue.build();
          onChanged();
        } else {
          markBuilder_.setMessage(builderForValue.build());
        }
        argtypeCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public Builder mergeMark(io.grpc.benchmarks.proto.Control.Mark value) {
        if (markBuilder_ == null) {
          if (argtypeCase_ == 2 &&
              argtype_ != io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance()) {
            argtype_ = io.grpc.benchmarks.proto.Control.Mark.newBuilder((io.grpc.benchmarks.proto.Control.Mark) argtype_)
                .mergeFrom(value).buildPartial();
          } else {
            argtype_ = value;
          }
          onChanged();
        } else {
          if (argtypeCase_ == 2) {
            markBuilder_.mergeFrom(value);
          }
          markBuilder_.setMessage(value);
        }
        argtypeCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public Builder clearMark() {
        if (markBuilder_ == null) {
          if (argtypeCase_ == 2) {
            argtypeCase_ = 0;
            argtype_ = null;
            onChanged();
          }
        } else {
          if (argtypeCase_ == 2) {
            argtypeCase_ = 0;
            argtype_ = null;
          }
          markBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.Mark.Builder getMarkBuilder() {
        return getMarkFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.MarkOrBuilder getMarkOrBuilder() {
        if ((argtypeCase_ == 2) && (markBuilder_ != null)) {
          return markBuilder_.getMessageOrBuilder();
        } else {
          if (argtypeCase_ == 2) {
            return (io.grpc.benchmarks.proto.Control.Mark) argtype_;
          }
          return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.Mark, io.grpc.benchmarks.proto.Control.Mark.Builder, io.grpc.benchmarks.proto.Control.MarkOrBuilder> 
          getMarkFieldBuilder() {
        if (markBuilder_ == null) {
          if (!(argtypeCase_ == 2)) {
            argtype_ = io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
          }
          markBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.Mark, io.grpc.benchmarks.proto.Control.Mark.Builder, io.grpc.benchmarks.proto.Control.MarkOrBuilder>(
                  (io.grpc.benchmarks.proto.Control.Mark) argtype_,
                  getParentForChildren(),
                  isClean());
          argtype_ = null;
        }
        argtypeCase_ = 2;
        onChanged();;
        return markBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ClientArgs)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ClientArgs)
    private static final io.grpc.benchmarks.proto.Control.ClientArgs DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ClientArgs();
    }

    public static io.grpc.benchmarks.proto.Control.ClientArgs getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ClientArgs getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ServerConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.grpc.testing.ServerType server_type = 1;</code>
     */
    int getServerTypeValue();
    /**
     * <code>.grpc.testing.ServerType server_type = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ServerType getServerType();

    /**
     * <code>.grpc.testing.SecurityParams security_params = 2;</code>
     */
    boolean hasSecurityParams();
    /**
     * <code>.grpc.testing.SecurityParams security_params = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.SecurityParams getSecurityParams();
    /**
     * <code>.grpc.testing.SecurityParams security_params = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder getSecurityParamsOrBuilder();

    /**
     * <pre>
     * Port on which to listen. Zero means pick unused port.
     * </pre>
     *
     * <code>int32 port = 4;</code>
     */
    int getPort();

    /**
     * <pre>
     * Only for async server. Number of threads used to serve the requests.
     * </pre>
     *
     * <code>int32 async_server_threads = 7;</code>
     */
    int getAsyncServerThreads();

    /**
     * <pre>
     * Specify the number of cores to limit server to, if desired
     * </pre>
     *
     * <code>int32 core_limit = 8;</code>
     */
    int getCoreLimit();

    /**
     * <pre>
     * payload config, used in generic server.
     * Note this must NOT be used in proto (non-generic) servers. For proto servers,
     * 'response sizes' must be configured from the 'response_size' field of the
     * 'SimpleRequest' objects in RPC requests.
     * </pre>
     *
     * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
     */
    boolean hasPayloadConfig();
    /**
     * <pre>
     * payload config, used in generic server.
     * Note this must NOT be used in proto (non-generic) servers. For proto servers,
     * 'response sizes' must be configured from the 'response_size' field of the
     * 'SimpleRequest' objects in RPC requests.
     * </pre>
     *
     * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
     */
    io.grpc.benchmarks.proto.Payloads.PayloadConfig getPayloadConfig();
    /**
     * <pre>
     * payload config, used in generic server.
     * Note this must NOT be used in proto (non-generic) servers. For proto servers,
     * 'response sizes' must be configured from the 'response_size' field of the
     * 'SimpleRequest' objects in RPC requests.
     * </pre>
     *
     * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
     */
    io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder getPayloadConfigOrBuilder();

    /**
     * <pre>
     * Specify the cores we should run the server on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 10;</code>
     */
    java.util.List<java.lang.Integer> getCoreListList();
    /**
     * <pre>
     * Specify the cores we should run the server on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 10;</code>
     */
    int getCoreListCount();
    /**
     * <pre>
     * Specify the cores we should run the server on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 10;</code>
     */
    int getCoreList(int index);

    /**
     * <pre>
     * If we use an OTHER_SERVER client_type, this string gives more detail
     * </pre>
     *
     * <code>string other_server_api = 11;</code>
     */
    java.lang.String getOtherServerApi();
    /**
     * <pre>
     * If we use an OTHER_SERVER client_type, this string gives more detail
     * </pre>
     *
     * <code>string other_server_api = 11;</code>
     */
    com.google.protobuf.ByteString
        getOtherServerApiBytes();

    /**
     * <pre>
     * Buffer pool size (no buffer pool specified if unset)
     * </pre>
     *
     * <code>int32 resource_quota_size = 1001;</code>
     */
    int getResourceQuotaSize();
  }
  /**
   * Protobuf type {@code grpc.testing.ServerConfig}
   */
  public  static final class ServerConfig extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ServerConfig)
      ServerConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServerConfig.newBuilder() to construct.
    private ServerConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerConfig() {
      serverType_ = 0;
      port_ = 0;
      asyncServerThreads_ = 0;
      coreLimit_ = 0;
      coreList_ = java.util.Collections.emptyList();
      otherServerApi_ = "";
      resourceQuotaSize_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServerConfig(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();

              serverType_ = rawValue;
              break;
            }
            case 18: {
              io.grpc.benchmarks.proto.Control.SecurityParams.Builder subBuilder = null;
              if (securityParams_ != null) {
                subBuilder = securityParams_.toBuilder();
              }
              securityParams_ = input.readMessage(io.grpc.benchmarks.proto.Control.SecurityParams.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(securityParams_);
                securityParams_ = subBuilder.buildPartial();
              }

              break;
            }
            case 32: {

              port_ = input.readInt32();
              break;
            }
            case 56: {

              asyncServerThreads_ = input.readInt32();
              break;
            }
            case 64: {

              coreLimit_ = input.readInt32();
              break;
            }
            case 74: {
              io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder subBuilder = null;
              if (payloadConfig_ != null) {
                subBuilder = payloadConfig_.toBuilder();
              }
              payloadConfig_ = input.readMessage(io.grpc.benchmarks.proto.Payloads.PayloadConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(payloadConfig_);
                payloadConfig_ = subBuilder.buildPartial();
              }

              break;
            }
            case 80: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                coreList_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              coreList_.add(input.readInt32());
              break;
            }
            case 82: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                coreList_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              while (input.getBytesUntilLimit() > 0) {
                coreList_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 90: {
              java.lang.String s = input.readStringRequireUtf8();

              otherServerApi_ = s;
              break;
            }
            case 8008: {

              resourceQuotaSize_ = input.readInt32();
              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_ & 0x00000040) == 0x00000040)) {
          coreList_ = java.util.Collections.unmodifiableList(coreList_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerConfig_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ServerConfig.class, io.grpc.benchmarks.proto.Control.ServerConfig.Builder.class);
    }

    private int bitField0_;
    public static final int SERVER_TYPE_FIELD_NUMBER = 1;
    private int serverType_;
    /**
     * <code>.grpc.testing.ServerType server_type = 1;</code>
     */
    public int getServerTypeValue() {
      return serverType_;
    }
    /**
     * <code>.grpc.testing.ServerType server_type = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ServerType getServerType() {
      io.grpc.benchmarks.proto.Control.ServerType result = io.grpc.benchmarks.proto.Control.ServerType.valueOf(serverType_);
      return result == null ? io.grpc.benchmarks.proto.Control.ServerType.UNRECOGNIZED : result;
    }

    public static final int SECURITY_PARAMS_FIELD_NUMBER = 2;
    private io.grpc.benchmarks.proto.Control.SecurityParams securityParams_;
    /**
     * <code>.grpc.testing.SecurityParams security_params = 2;</code>
     */
    public boolean hasSecurityParams() {
      return securityParams_ != null;
    }
    /**
     * <code>.grpc.testing.SecurityParams security_params = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.SecurityParams getSecurityParams() {
      return securityParams_ == null ? io.grpc.benchmarks.proto.Control.SecurityParams.getDefaultInstance() : securityParams_;
    }
    /**
     * <code>.grpc.testing.SecurityParams security_params = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder getSecurityParamsOrBuilder() {
      return getSecurityParams();
    }

    public static final int PORT_FIELD_NUMBER = 4;
    private int port_;
    /**
     * <pre>
     * Port on which to listen. Zero means pick unused port.
     * </pre>
     *
     * <code>int32 port = 4;</code>
     */
    public int getPort() {
      return port_;
    }

    public static final int ASYNC_SERVER_THREADS_FIELD_NUMBER = 7;
    private int asyncServerThreads_;
    /**
     * <pre>
     * Only for async server. Number of threads used to serve the requests.
     * </pre>
     *
     * <code>int32 async_server_threads = 7;</code>
     */
    public int getAsyncServerThreads() {
      return asyncServerThreads_;
    }

    public static final int CORE_LIMIT_FIELD_NUMBER = 8;
    private int coreLimit_;
    /**
     * <pre>
     * Specify the number of cores to limit server to, if desired
     * </pre>
     *
     * <code>int32 core_limit = 8;</code>
     */
    public int getCoreLimit() {
      return coreLimit_;
    }

    public static final int PAYLOAD_CONFIG_FIELD_NUMBER = 9;
    private io.grpc.benchmarks.proto.Payloads.PayloadConfig payloadConfig_;
    /**
     * <pre>
     * payload config, used in generic server.
     * Note this must NOT be used in proto (non-generic) servers. For proto servers,
     * 'response sizes' must be configured from the 'response_size' field of the
     * 'SimpleRequest' objects in RPC requests.
     * </pre>
     *
     * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
     */
    public boolean hasPayloadConfig() {
      return payloadConfig_ != null;
    }
    /**
     * <pre>
     * payload config, used in generic server.
     * Note this must NOT be used in proto (non-generic) servers. For proto servers,
     * 'response sizes' must be configured from the 'response_size' field of the
     * 'SimpleRequest' objects in RPC requests.
     * </pre>
     *
     * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
     */
    public io.grpc.benchmarks.proto.Payloads.PayloadConfig getPayloadConfig() {
      return payloadConfig_ == null ? io.grpc.benchmarks.proto.Payloads.PayloadConfig.getDefaultInstance() : payloadConfig_;
    }
    /**
     * <pre>
     * payload config, used in generic server.
     * Note this must NOT be used in proto (non-generic) servers. For proto servers,
     * 'response sizes' must be configured from the 'response_size' field of the
     * 'SimpleRequest' objects in RPC requests.
     * </pre>
     *
     * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
     */
    public io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder getPayloadConfigOrBuilder() {
      return getPayloadConfig();
    }

    public static final int CORE_LIST_FIELD_NUMBER = 10;
    private java.util.List<java.lang.Integer> coreList_;
    /**
     * <pre>
     * Specify the cores we should run the server on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 10;</code>
     */
    public java.util.List<java.lang.Integer>
        getCoreListList() {
      return coreList_;
    }
    /**
     * <pre>
     * Specify the cores we should run the server on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 10;</code>
     */
    public int getCoreListCount() {
      return coreList_.size();
    }
    /**
     * <pre>
     * Specify the cores we should run the server on, if desired
     * </pre>
     *
     * <code>repeated int32 core_list = 10;</code>
     */
    public int getCoreList(int index) {
      return coreList_.get(index);
    }
    private int coreListMemoizedSerializedSize = -1;

    public static final int OTHER_SERVER_API_FIELD_NUMBER = 11;
    private volatile java.lang.Object otherServerApi_;
    /**
     * <pre>
     * If we use an OTHER_SERVER client_type, this string gives more detail
     * </pre>
     *
     * <code>string other_server_api = 11;</code>
     */
    public java.lang.String getOtherServerApi() {
      java.lang.Object ref = otherServerApi_;
      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();
        otherServerApi_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * If we use an OTHER_SERVER client_type, this string gives more detail
     * </pre>
     *
     * <code>string other_server_api = 11;</code>
     */
    public com.google.protobuf.ByteString
        getOtherServerApiBytes() {
      java.lang.Object ref = otherServerApi_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        otherServerApi_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESOURCE_QUOTA_SIZE_FIELD_NUMBER = 1001;
    private int resourceQuotaSize_;
    /**
     * <pre>
     * Buffer pool size (no buffer pool specified if unset)
     * </pre>
     *
     * <code>int32 resource_quota_size = 1001;</code>
     */
    public int getResourceQuotaSize() {
      return resourceQuotaSize_;
    }

    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 (serverType_ != io.grpc.benchmarks.proto.Control.ServerType.SYNC_SERVER.getNumber()) {
        output.writeEnum(1, serverType_);
      }
      if (securityParams_ != null) {
        output.writeMessage(2, getSecurityParams());
      }
      if (port_ != 0) {
        output.writeInt32(4, port_);
      }
      if (asyncServerThreads_ != 0) {
        output.writeInt32(7, asyncServerThreads_);
      }
      if (coreLimit_ != 0) {
        output.writeInt32(8, coreLimit_);
      }
      if (payloadConfig_ != null) {
        output.writeMessage(9, getPayloadConfig());
      }
      if (getCoreListList().size() > 0) {
        output.writeUInt32NoTag(82);
        output.writeUInt32NoTag(coreListMemoizedSerializedSize);
      }
      for (int i = 0; i < coreList_.size(); i++) {
        output.writeInt32NoTag(coreList_.get(i));
      }
      if (!getOtherServerApiBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, otherServerApi_);
      }
      if (resourceQuotaSize_ != 0) {
        output.writeInt32(1001, resourceQuotaSize_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (serverType_ != io.grpc.benchmarks.proto.Control.ServerType.SYNC_SERVER.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, serverType_);
      }
      if (securityParams_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSecurityParams());
      }
      if (port_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, port_);
      }
      if (asyncServerThreads_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, asyncServerThreads_);
      }
      if (coreLimit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, coreLimit_);
      }
      if (payloadConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getPayloadConfig());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < coreList_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(coreList_.get(i));
        }
        size += dataSize;
        if (!getCoreListList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        coreListMemoizedSerializedSize = dataSize;
      }
      if (!getOtherServerApiBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, otherServerApi_);
      }
      if (resourceQuotaSize_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1001, resourceQuotaSize_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ServerConfig)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ServerConfig other = (io.grpc.benchmarks.proto.Control.ServerConfig) obj;

      boolean result = true;
      result = result && serverType_ == other.serverType_;
      result = result && (hasSecurityParams() == other.hasSecurityParams());
      if (hasSecurityParams()) {
        result = result && getSecurityParams()
            .equals(other.getSecurityParams());
      }
      result = result && (getPort()
          == other.getPort());
      result = result && (getAsyncServerThreads()
          == other.getAsyncServerThreads());
      result = result && (getCoreLimit()
          == other.getCoreLimit());
      result = result && (hasPayloadConfig() == other.hasPayloadConfig());
      if (hasPayloadConfig()) {
        result = result && getPayloadConfig()
            .equals(other.getPayloadConfig());
      }
      result = result && getCoreListList()
          .equals(other.getCoreListList());
      result = result && getOtherServerApi()
          .equals(other.getOtherServerApi());
      result = result && (getResourceQuotaSize()
          == other.getResourceQuotaSize());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SERVER_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + serverType_;
      if (hasSecurityParams()) {
        hash = (37 * hash) + SECURITY_PARAMS_FIELD_NUMBER;
        hash = (53 * hash) + getSecurityParams().hashCode();
      }
      hash = (37 * hash) + PORT_FIELD_NUMBER;
      hash = (53 * hash) + getPort();
      hash = (37 * hash) + ASYNC_SERVER_THREADS_FIELD_NUMBER;
      hash = (53 * hash) + getAsyncServerThreads();
      hash = (37 * hash) + CORE_LIMIT_FIELD_NUMBER;
      hash = (53 * hash) + getCoreLimit();
      if (hasPayloadConfig()) {
        hash = (37 * hash) + PAYLOAD_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getPayloadConfig().hashCode();
      }
      if (getCoreListCount() > 0) {
        hash = (37 * hash) + CORE_LIST_FIELD_NUMBER;
        hash = (53 * hash) + getCoreListList().hashCode();
      }
      hash = (37 * hash) + OTHER_SERVER_API_FIELD_NUMBER;
      hash = (53 * hash) + getOtherServerApi().hashCode();
      hash = (37 * hash) + RESOURCE_QUOTA_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + getResourceQuotaSize();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ServerConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig 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 io.grpc.benchmarks.proto.Control.ServerConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig 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 io.grpc.benchmarks.proto.Control.ServerConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerConfig 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(io.grpc.benchmarks.proto.Control.ServerConfig 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;
    }
    /**
     * Protobuf type {@code grpc.testing.ServerConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ServerConfig)
        io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerConfig_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ServerConfig.class, io.grpc.benchmarks.proto.Control.ServerConfig.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ServerConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        serverType_ = 0;

        if (securityParamsBuilder_ == null) {
          securityParams_ = null;
        } else {
          securityParams_ = null;
          securityParamsBuilder_ = null;
        }
        port_ = 0;

        asyncServerThreads_ = 0;

        coreLimit_ = 0;

        if (payloadConfigBuilder_ == null) {
          payloadConfig_ = null;
        } else {
          payloadConfig_ = null;
          payloadConfigBuilder_ = null;
        }
        coreList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        otherServerApi_ = "";

        resourceQuotaSize_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerConfig_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ServerConfig getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ServerConfig build() {
        io.grpc.benchmarks.proto.Control.ServerConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ServerConfig buildPartial() {
        io.grpc.benchmarks.proto.Control.ServerConfig result = new io.grpc.benchmarks.proto.Control.ServerConfig(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.serverType_ = serverType_;
        if (securityParamsBuilder_ == null) {
          result.securityParams_ = securityParams_;
        } else {
          result.securityParams_ = securityParamsBuilder_.build();
        }
        result.port_ = port_;
        result.asyncServerThreads_ = asyncServerThreads_;
        result.coreLimit_ = coreLimit_;
        if (payloadConfigBuilder_ == null) {
          result.payloadConfig_ = payloadConfig_;
        } else {
          result.payloadConfig_ = payloadConfigBuilder_.build();
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          coreList_ = java.util.Collections.unmodifiableList(coreList_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.coreList_ = coreList_;
        result.otherServerApi_ = otherServerApi_;
        result.resourceQuotaSize_ = resourceQuotaSize_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ServerConfig) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ServerConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ServerConfig other) {
        if (other == io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance()) return this;
        if (other.serverType_ != 0) {
          setServerTypeValue(other.getServerTypeValue());
        }
        if (other.hasSecurityParams()) {
          mergeSecurityParams(other.getSecurityParams());
        }
        if (other.getPort() != 0) {
          setPort(other.getPort());
        }
        if (other.getAsyncServerThreads() != 0) {
          setAsyncServerThreads(other.getAsyncServerThreads());
        }
        if (other.getCoreLimit() != 0) {
          setCoreLimit(other.getCoreLimit());
        }
        if (other.hasPayloadConfig()) {
          mergePayloadConfig(other.getPayloadConfig());
        }
        if (!other.coreList_.isEmpty()) {
          if (coreList_.isEmpty()) {
            coreList_ = other.coreList_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureCoreListIsMutable();
            coreList_.addAll(other.coreList_);
          }
          onChanged();
        }
        if (!other.getOtherServerApi().isEmpty()) {
          otherServerApi_ = other.otherServerApi_;
          onChanged();
        }
        if (other.getResourceQuotaSize() != 0) {
          setResourceQuotaSize(other.getResourceQuotaSize());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ServerConfig parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ServerConfig) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int serverType_ = 0;
      /**
       * <code>.grpc.testing.ServerType server_type = 1;</code>
       */
      public int getServerTypeValue() {
        return serverType_;
      }
      /**
       * <code>.grpc.testing.ServerType server_type = 1;</code>
       */
      public Builder setServerTypeValue(int value) {
        serverType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.grpc.testing.ServerType server_type = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ServerType getServerType() {
        io.grpc.benchmarks.proto.Control.ServerType result = io.grpc.benchmarks.proto.Control.ServerType.valueOf(serverType_);
        return result == null ? io.grpc.benchmarks.proto.Control.ServerType.UNRECOGNIZED : result;
      }
      /**
       * <code>.grpc.testing.ServerType server_type = 1;</code>
       */
      public Builder setServerType(io.grpc.benchmarks.proto.Control.ServerType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        serverType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.grpc.testing.ServerType server_type = 1;</code>
       */
      public Builder clearServerType() {
        
        serverType_ = 0;
        onChanged();
        return this;
      }

      private io.grpc.benchmarks.proto.Control.SecurityParams securityParams_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.SecurityParams, io.grpc.benchmarks.proto.Control.SecurityParams.Builder, io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder> securityParamsBuilder_;
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      public boolean hasSecurityParams() {
        return securityParamsBuilder_ != null || securityParams_ != null;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.SecurityParams getSecurityParams() {
        if (securityParamsBuilder_ == null) {
          return securityParams_ == null ? io.grpc.benchmarks.proto.Control.SecurityParams.getDefaultInstance() : securityParams_;
        } else {
          return securityParamsBuilder_.getMessage();
        }
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      public Builder setSecurityParams(io.grpc.benchmarks.proto.Control.SecurityParams value) {
        if (securityParamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          securityParams_ = value;
          onChanged();
        } else {
          securityParamsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      public Builder setSecurityParams(
          io.grpc.benchmarks.proto.Control.SecurityParams.Builder builderForValue) {
        if (securityParamsBuilder_ == null) {
          securityParams_ = builderForValue.build();
          onChanged();
        } else {
          securityParamsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      public Builder mergeSecurityParams(io.grpc.benchmarks.proto.Control.SecurityParams value) {
        if (securityParamsBuilder_ == null) {
          if (securityParams_ != null) {
            securityParams_ =
              io.grpc.benchmarks.proto.Control.SecurityParams.newBuilder(securityParams_).mergeFrom(value).buildPartial();
          } else {
            securityParams_ = value;
          }
          onChanged();
        } else {
          securityParamsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      public Builder clearSecurityParams() {
        if (securityParamsBuilder_ == null) {
          securityParams_ = null;
          onChanged();
        } else {
          securityParams_ = null;
          securityParamsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.SecurityParams.Builder getSecurityParamsBuilder() {
        
        onChanged();
        return getSecurityParamsFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder getSecurityParamsOrBuilder() {
        if (securityParamsBuilder_ != null) {
          return securityParamsBuilder_.getMessageOrBuilder();
        } else {
          return securityParams_ == null ?
              io.grpc.benchmarks.proto.Control.SecurityParams.getDefaultInstance() : securityParams_;
        }
      }
      /**
       * <code>.grpc.testing.SecurityParams security_params = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.SecurityParams, io.grpc.benchmarks.proto.Control.SecurityParams.Builder, io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder> 
          getSecurityParamsFieldBuilder() {
        if (securityParamsBuilder_ == null) {
          securityParamsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.SecurityParams, io.grpc.benchmarks.proto.Control.SecurityParams.Builder, io.grpc.benchmarks.proto.Control.SecurityParamsOrBuilder>(
                  getSecurityParams(),
                  getParentForChildren(),
                  isClean());
          securityParams_ = null;
        }
        return securityParamsBuilder_;
      }

      private int port_ ;
      /**
       * <pre>
       * Port on which to listen. Zero means pick unused port.
       * </pre>
       *
       * <code>int32 port = 4;</code>
       */
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * Port on which to listen. Zero means pick unused port.
       * </pre>
       *
       * <code>int32 port = 4;</code>
       */
      public Builder setPort(int value) {
        
        port_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Port on which to listen. Zero means pick unused port.
       * </pre>
       *
       * <code>int32 port = 4;</code>
       */
      public Builder clearPort() {
        
        port_ = 0;
        onChanged();
        return this;
      }

      private int asyncServerThreads_ ;
      /**
       * <pre>
       * Only for async server. Number of threads used to serve the requests.
       * </pre>
       *
       * <code>int32 async_server_threads = 7;</code>
       */
      public int getAsyncServerThreads() {
        return asyncServerThreads_;
      }
      /**
       * <pre>
       * Only for async server. Number of threads used to serve the requests.
       * </pre>
       *
       * <code>int32 async_server_threads = 7;</code>
       */
      public Builder setAsyncServerThreads(int value) {
        
        asyncServerThreads_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only for async server. Number of threads used to serve the requests.
       * </pre>
       *
       * <code>int32 async_server_threads = 7;</code>
       */
      public Builder clearAsyncServerThreads() {
        
        asyncServerThreads_ = 0;
        onChanged();
        return this;
      }

      private int coreLimit_ ;
      /**
       * <pre>
       * Specify the number of cores to limit server to, if desired
       * </pre>
       *
       * <code>int32 core_limit = 8;</code>
       */
      public int getCoreLimit() {
        return coreLimit_;
      }
      /**
       * <pre>
       * Specify the number of cores to limit server to, if desired
       * </pre>
       *
       * <code>int32 core_limit = 8;</code>
       */
      public Builder setCoreLimit(int value) {
        
        coreLimit_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify the number of cores to limit server to, if desired
       * </pre>
       *
       * <code>int32 core_limit = 8;</code>
       */
      public Builder clearCoreLimit() {
        
        coreLimit_ = 0;
        onChanged();
        return this;
      }

      private io.grpc.benchmarks.proto.Payloads.PayloadConfig payloadConfig_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Payloads.PayloadConfig, io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder, io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder> payloadConfigBuilder_;
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      public boolean hasPayloadConfig() {
        return payloadConfigBuilder_ != null || payloadConfig_ != null;
      }
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      public io.grpc.benchmarks.proto.Payloads.PayloadConfig getPayloadConfig() {
        if (payloadConfigBuilder_ == null) {
          return payloadConfig_ == null ? io.grpc.benchmarks.proto.Payloads.PayloadConfig.getDefaultInstance() : payloadConfig_;
        } else {
          return payloadConfigBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      public Builder setPayloadConfig(io.grpc.benchmarks.proto.Payloads.PayloadConfig value) {
        if (payloadConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payloadConfig_ = value;
          onChanged();
        } else {
          payloadConfigBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      public Builder setPayloadConfig(
          io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder builderForValue) {
        if (payloadConfigBuilder_ == null) {
          payloadConfig_ = builderForValue.build();
          onChanged();
        } else {
          payloadConfigBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      public Builder mergePayloadConfig(io.grpc.benchmarks.proto.Payloads.PayloadConfig value) {
        if (payloadConfigBuilder_ == null) {
          if (payloadConfig_ != null) {
            payloadConfig_ =
              io.grpc.benchmarks.proto.Payloads.PayloadConfig.newBuilder(payloadConfig_).mergeFrom(value).buildPartial();
          } else {
            payloadConfig_ = value;
          }
          onChanged();
        } else {
          payloadConfigBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      public Builder clearPayloadConfig() {
        if (payloadConfigBuilder_ == null) {
          payloadConfig_ = null;
          onChanged();
        } else {
          payloadConfig_ = null;
          payloadConfigBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      public io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder getPayloadConfigBuilder() {
        
        onChanged();
        return getPayloadConfigFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      public io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder getPayloadConfigOrBuilder() {
        if (payloadConfigBuilder_ != null) {
          return payloadConfigBuilder_.getMessageOrBuilder();
        } else {
          return payloadConfig_ == null ?
              io.grpc.benchmarks.proto.Payloads.PayloadConfig.getDefaultInstance() : payloadConfig_;
        }
      }
      /**
       * <pre>
       * payload config, used in generic server.
       * Note this must NOT be used in proto (non-generic) servers. For proto servers,
       * 'response sizes' must be configured from the 'response_size' field of the
       * 'SimpleRequest' objects in RPC requests.
       * </pre>
       *
       * <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Payloads.PayloadConfig, io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder, io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder> 
          getPayloadConfigFieldBuilder() {
        if (payloadConfigBuilder_ == null) {
          payloadConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Payloads.PayloadConfig, io.grpc.benchmarks.proto.Payloads.PayloadConfig.Builder, io.grpc.benchmarks.proto.Payloads.PayloadConfigOrBuilder>(
                  getPayloadConfig(),
                  getParentForChildren(),
                  isClean());
          payloadConfig_ = null;
        }
        return payloadConfigBuilder_;
      }

      private java.util.List<java.lang.Integer> coreList_ = java.util.Collections.emptyList();
      private void ensureCoreListIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          coreList_ = new java.util.ArrayList<java.lang.Integer>(coreList_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <pre>
       * Specify the cores we should run the server on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 10;</code>
       */
      public java.util.List<java.lang.Integer>
          getCoreListList() {
        return java.util.Collections.unmodifiableList(coreList_);
      }
      /**
       * <pre>
       * Specify the cores we should run the server on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 10;</code>
       */
      public int getCoreListCount() {
        return coreList_.size();
      }
      /**
       * <pre>
       * Specify the cores we should run the server on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 10;</code>
       */
      public int getCoreList(int index) {
        return coreList_.get(index);
      }
      /**
       * <pre>
       * Specify the cores we should run the server on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 10;</code>
       */
      public Builder setCoreList(
          int index, int value) {
        ensureCoreListIsMutable();
        coreList_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify the cores we should run the server on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 10;</code>
       */
      public Builder addCoreList(int value) {
        ensureCoreListIsMutable();
        coreList_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify the cores we should run the server on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 10;</code>
       */
      public Builder addAllCoreList(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureCoreListIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, coreList_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Specify the cores we should run the server on, if desired
       * </pre>
       *
       * <code>repeated int32 core_list = 10;</code>
       */
      public Builder clearCoreList() {
        coreList_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }

      private java.lang.Object otherServerApi_ = "";
      /**
       * <pre>
       * If we use an OTHER_SERVER client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_server_api = 11;</code>
       */
      public java.lang.String getOtherServerApi() {
        java.lang.Object ref = otherServerApi_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          otherServerApi_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * If we use an OTHER_SERVER client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_server_api = 11;</code>
       */
      public com.google.protobuf.ByteString
          getOtherServerApiBytes() {
        java.lang.Object ref = otherServerApi_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          otherServerApi_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * If we use an OTHER_SERVER client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_server_api = 11;</code>
       */
      public Builder setOtherServerApi(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        otherServerApi_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If we use an OTHER_SERVER client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_server_api = 11;</code>
       */
      public Builder clearOtherServerApi() {
        
        otherServerApi_ = getDefaultInstance().getOtherServerApi();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If we use an OTHER_SERVER client_type, this string gives more detail
       * </pre>
       *
       * <code>string other_server_api = 11;</code>
       */
      public Builder setOtherServerApiBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        otherServerApi_ = value;
        onChanged();
        return this;
      }

      private int resourceQuotaSize_ ;
      /**
       * <pre>
       * Buffer pool size (no buffer pool specified if unset)
       * </pre>
       *
       * <code>int32 resource_quota_size = 1001;</code>
       */
      public int getResourceQuotaSize() {
        return resourceQuotaSize_;
      }
      /**
       * <pre>
       * Buffer pool size (no buffer pool specified if unset)
       * </pre>
       *
       * <code>int32 resource_quota_size = 1001;</code>
       */
      public Builder setResourceQuotaSize(int value) {
        
        resourceQuotaSize_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Buffer pool size (no buffer pool specified if unset)
       * </pre>
       *
       * <code>int32 resource_quota_size = 1001;</code>
       */
      public Builder clearResourceQuotaSize() {
        
        resourceQuotaSize_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ServerConfig)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ServerConfig)
    private static final io.grpc.benchmarks.proto.Control.ServerConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ServerConfig();
    }

    public static io.grpc.benchmarks.proto.Control.ServerConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ServerConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerArgsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ServerArgs)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.grpc.testing.ServerConfig setup = 1;</code>
     */
    boolean hasSetup();
    /**
     * <code>.grpc.testing.ServerConfig setup = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ServerConfig getSetup();
    /**
     * <code>.grpc.testing.ServerConfig setup = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder getSetupOrBuilder();

    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    boolean hasMark();
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.Mark getMark();
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.MarkOrBuilder getMarkOrBuilder();

    public io.grpc.benchmarks.proto.Control.ServerArgs.ArgtypeCase getArgtypeCase();
  }
  /**
   * Protobuf type {@code grpc.testing.ServerArgs}
   */
  public  static final class ServerArgs extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ServerArgs)
      ServerArgsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServerArgs.newBuilder() to construct.
    private ServerArgs(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerArgs() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServerArgs(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.grpc.benchmarks.proto.Control.ServerConfig.Builder subBuilder = null;
              if (argtypeCase_ == 1) {
                subBuilder = ((io.grpc.benchmarks.proto.Control.ServerConfig) argtype_).toBuilder();
              }
              argtype_ =
                  input.readMessage(io.grpc.benchmarks.proto.Control.ServerConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.grpc.benchmarks.proto.Control.ServerConfig) argtype_);
                argtype_ = subBuilder.buildPartial();
              }
              argtypeCase_ = 1;
              break;
            }
            case 18: {
              io.grpc.benchmarks.proto.Control.Mark.Builder subBuilder = null;
              if (argtypeCase_ == 2) {
                subBuilder = ((io.grpc.benchmarks.proto.Control.Mark) argtype_).toBuilder();
              }
              argtype_ =
                  input.readMessage(io.grpc.benchmarks.proto.Control.Mark.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.grpc.benchmarks.proto.Control.Mark) argtype_);
                argtype_ = subBuilder.buildPartial();
              }
              argtypeCase_ = 2;
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerArgs_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerArgs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ServerArgs.class, io.grpc.benchmarks.proto.Control.ServerArgs.Builder.class);
    }

    private int argtypeCase_ = 0;
    private java.lang.Object argtype_;
    public enum ArgtypeCase
        implements com.google.protobuf.Internal.EnumLite {
      SETUP(1),
      MARK(2),
      ARGTYPE_NOT_SET(0);
      private final int value;
      private ArgtypeCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ArgtypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static ArgtypeCase forNumber(int value) {
        switch (value) {
          case 1: return SETUP;
          case 2: return MARK;
          case 0: return ARGTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ArgtypeCase
    getArgtypeCase() {
      return ArgtypeCase.forNumber(
          argtypeCase_);
    }

    public static final int SETUP_FIELD_NUMBER = 1;
    /**
     * <code>.grpc.testing.ServerConfig setup = 1;</code>
     */
    public boolean hasSetup() {
      return argtypeCase_ == 1;
    }
    /**
     * <code>.grpc.testing.ServerConfig setup = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ServerConfig getSetup() {
      if (argtypeCase_ == 1) {
         return (io.grpc.benchmarks.proto.Control.ServerConfig) argtype_;
      }
      return io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance();
    }
    /**
     * <code>.grpc.testing.ServerConfig setup = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder getSetupOrBuilder() {
      if (argtypeCase_ == 1) {
         return (io.grpc.benchmarks.proto.Control.ServerConfig) argtype_;
      }
      return io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance();
    }

    public static final int MARK_FIELD_NUMBER = 2;
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    public boolean hasMark() {
      return argtypeCase_ == 2;
    }
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.Mark getMark() {
      if (argtypeCase_ == 2) {
         return (io.grpc.benchmarks.proto.Control.Mark) argtype_;
      }
      return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
    }
    /**
     * <code>.grpc.testing.Mark mark = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.MarkOrBuilder getMarkOrBuilder() {
      if (argtypeCase_ == 2) {
         return (io.grpc.benchmarks.proto.Control.Mark) argtype_;
      }
      return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
    }

    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 {
      if (argtypeCase_ == 1) {
        output.writeMessage(1, (io.grpc.benchmarks.proto.Control.ServerConfig) argtype_);
      }
      if (argtypeCase_ == 2) {
        output.writeMessage(2, (io.grpc.benchmarks.proto.Control.Mark) argtype_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (argtypeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (io.grpc.benchmarks.proto.Control.ServerConfig) argtype_);
      }
      if (argtypeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (io.grpc.benchmarks.proto.Control.Mark) argtype_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ServerArgs)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ServerArgs other = (io.grpc.benchmarks.proto.Control.ServerArgs) obj;

      boolean result = true;
      result = result && getArgtypeCase().equals(
          other.getArgtypeCase());
      if (!result) return false;
      switch (argtypeCase_) {
        case 1:
          result = result && getSetup()
              .equals(other.getSetup());
          break;
        case 2:
          result = result && getMark()
              .equals(other.getMark());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (argtypeCase_) {
        case 1:
          hash = (37 * hash) + SETUP_FIELD_NUMBER;
          hash = (53 * hash) + getSetup().hashCode();
          break;
        case 2:
          hash = (37 * hash) + MARK_FIELD_NUMBER;
          hash = (53 * hash) + getMark().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ServerArgs parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs 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 io.grpc.benchmarks.proto.Control.ServerArgs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs 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 io.grpc.benchmarks.proto.Control.ServerArgs parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerArgs 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(io.grpc.benchmarks.proto.Control.ServerArgs 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;
    }
    /**
     * Protobuf type {@code grpc.testing.ServerArgs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ServerArgs)
        io.grpc.benchmarks.proto.Control.ServerArgsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerArgs_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerArgs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ServerArgs.class, io.grpc.benchmarks.proto.Control.ServerArgs.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ServerArgs.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        argtypeCase_ = 0;
        argtype_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerArgs_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ServerArgs getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ServerArgs.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ServerArgs build() {
        io.grpc.benchmarks.proto.Control.ServerArgs result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ServerArgs buildPartial() {
        io.grpc.benchmarks.proto.Control.ServerArgs result = new io.grpc.benchmarks.proto.Control.ServerArgs(this);
        if (argtypeCase_ == 1) {
          if (setupBuilder_ == null) {
            result.argtype_ = argtype_;
          } else {
            result.argtype_ = setupBuilder_.build();
          }
        }
        if (argtypeCase_ == 2) {
          if (markBuilder_ == null) {
            result.argtype_ = argtype_;
          } else {
            result.argtype_ = markBuilder_.build();
          }
        }
        result.argtypeCase_ = argtypeCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ServerArgs) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ServerArgs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ServerArgs other) {
        if (other == io.grpc.benchmarks.proto.Control.ServerArgs.getDefaultInstance()) return this;
        switch (other.getArgtypeCase()) {
          case SETUP: {
            mergeSetup(other.getSetup());
            break;
          }
          case MARK: {
            mergeMark(other.getMark());
            break;
          }
          case ARGTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ServerArgs parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ServerArgs) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int argtypeCase_ = 0;
      private java.lang.Object argtype_;
      public ArgtypeCase
          getArgtypeCase() {
        return ArgtypeCase.forNumber(
            argtypeCase_);
      }

      public Builder clearArgtype() {
        argtypeCase_ = 0;
        argtype_ = null;
        onChanged();
        return this;
      }


      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ServerConfig, io.grpc.benchmarks.proto.Control.ServerConfig.Builder, io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder> setupBuilder_;
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      public boolean hasSetup() {
        return argtypeCase_ == 1;
      }
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ServerConfig getSetup() {
        if (setupBuilder_ == null) {
          if (argtypeCase_ == 1) {
            return (io.grpc.benchmarks.proto.Control.ServerConfig) argtype_;
          }
          return io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance();
        } else {
          if (argtypeCase_ == 1) {
            return setupBuilder_.getMessage();
          }
          return io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      public Builder setSetup(io.grpc.benchmarks.proto.Control.ServerConfig value) {
        if (setupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          argtype_ = value;
          onChanged();
        } else {
          setupBuilder_.setMessage(value);
        }
        argtypeCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      public Builder setSetup(
          io.grpc.benchmarks.proto.Control.ServerConfig.Builder builderForValue) {
        if (setupBuilder_ == null) {
          argtype_ = builderForValue.build();
          onChanged();
        } else {
          setupBuilder_.setMessage(builderForValue.build());
        }
        argtypeCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      public Builder mergeSetup(io.grpc.benchmarks.proto.Control.ServerConfig value) {
        if (setupBuilder_ == null) {
          if (argtypeCase_ == 1 &&
              argtype_ != io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance()) {
            argtype_ = io.grpc.benchmarks.proto.Control.ServerConfig.newBuilder((io.grpc.benchmarks.proto.Control.ServerConfig) argtype_)
                .mergeFrom(value).buildPartial();
          } else {
            argtype_ = value;
          }
          onChanged();
        } else {
          if (argtypeCase_ == 1) {
            setupBuilder_.mergeFrom(value);
          }
          setupBuilder_.setMessage(value);
        }
        argtypeCase_ = 1;
        return this;
      }
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      public Builder clearSetup() {
        if (setupBuilder_ == null) {
          if (argtypeCase_ == 1) {
            argtypeCase_ = 0;
            argtype_ = null;
            onChanged();
          }
        } else {
          if (argtypeCase_ == 1) {
            argtypeCase_ = 0;
            argtype_ = null;
          }
          setupBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ServerConfig.Builder getSetupBuilder() {
        return getSetupFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder getSetupOrBuilder() {
        if ((argtypeCase_ == 1) && (setupBuilder_ != null)) {
          return setupBuilder_.getMessageOrBuilder();
        } else {
          if (argtypeCase_ == 1) {
            return (io.grpc.benchmarks.proto.Control.ServerConfig) argtype_;
          }
          return io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.ServerConfig setup = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ServerConfig, io.grpc.benchmarks.proto.Control.ServerConfig.Builder, io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder> 
          getSetupFieldBuilder() {
        if (setupBuilder_ == null) {
          if (!(argtypeCase_ == 1)) {
            argtype_ = io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance();
          }
          setupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.ServerConfig, io.grpc.benchmarks.proto.Control.ServerConfig.Builder, io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder>(
                  (io.grpc.benchmarks.proto.Control.ServerConfig) argtype_,
                  getParentForChildren(),
                  isClean());
          argtype_ = null;
        }
        argtypeCase_ = 1;
        onChanged();;
        return setupBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.Mark, io.grpc.benchmarks.proto.Control.Mark.Builder, io.grpc.benchmarks.proto.Control.MarkOrBuilder> markBuilder_;
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public boolean hasMark() {
        return argtypeCase_ == 2;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.Mark getMark() {
        if (markBuilder_ == null) {
          if (argtypeCase_ == 2) {
            return (io.grpc.benchmarks.proto.Control.Mark) argtype_;
          }
          return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
        } else {
          if (argtypeCase_ == 2) {
            return markBuilder_.getMessage();
          }
          return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public Builder setMark(io.grpc.benchmarks.proto.Control.Mark value) {
        if (markBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          argtype_ = value;
          onChanged();
        } else {
          markBuilder_.setMessage(value);
        }
        argtypeCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public Builder setMark(
          io.grpc.benchmarks.proto.Control.Mark.Builder builderForValue) {
        if (markBuilder_ == null) {
          argtype_ = builderForValue.build();
          onChanged();
        } else {
          markBuilder_.setMessage(builderForValue.build());
        }
        argtypeCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public Builder mergeMark(io.grpc.benchmarks.proto.Control.Mark value) {
        if (markBuilder_ == null) {
          if (argtypeCase_ == 2 &&
              argtype_ != io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance()) {
            argtype_ = io.grpc.benchmarks.proto.Control.Mark.newBuilder((io.grpc.benchmarks.proto.Control.Mark) argtype_)
                .mergeFrom(value).buildPartial();
          } else {
            argtype_ = value;
          }
          onChanged();
        } else {
          if (argtypeCase_ == 2) {
            markBuilder_.mergeFrom(value);
          }
          markBuilder_.setMessage(value);
        }
        argtypeCase_ = 2;
        return this;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public Builder clearMark() {
        if (markBuilder_ == null) {
          if (argtypeCase_ == 2) {
            argtypeCase_ = 0;
            argtype_ = null;
            onChanged();
          }
        } else {
          if (argtypeCase_ == 2) {
            argtypeCase_ = 0;
            argtype_ = null;
          }
          markBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.Mark.Builder getMarkBuilder() {
        return getMarkFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.MarkOrBuilder getMarkOrBuilder() {
        if ((argtypeCase_ == 2) && (markBuilder_ != null)) {
          return markBuilder_.getMessageOrBuilder();
        } else {
          if (argtypeCase_ == 2) {
            return (io.grpc.benchmarks.proto.Control.Mark) argtype_;
          }
          return io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
        }
      }
      /**
       * <code>.grpc.testing.Mark mark = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.Mark, io.grpc.benchmarks.proto.Control.Mark.Builder, io.grpc.benchmarks.proto.Control.MarkOrBuilder> 
          getMarkFieldBuilder() {
        if (markBuilder_ == null) {
          if (!(argtypeCase_ == 2)) {
            argtype_ = io.grpc.benchmarks.proto.Control.Mark.getDefaultInstance();
          }
          markBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.Mark, io.grpc.benchmarks.proto.Control.Mark.Builder, io.grpc.benchmarks.proto.Control.MarkOrBuilder>(
                  (io.grpc.benchmarks.proto.Control.Mark) argtype_,
                  getParentForChildren(),
                  isClean());
          argtype_ = null;
        }
        argtypeCase_ = 2;
        onChanged();;
        return markBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ServerArgs)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ServerArgs)
    private static final io.grpc.benchmarks.proto.Control.ServerArgs DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ServerArgs();
    }

    public static io.grpc.benchmarks.proto.Control.ServerArgs getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ServerArgs getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ServerStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.grpc.testing.ServerStats stats = 1;</code>
     */
    boolean hasStats();
    /**
     * <code>.grpc.testing.ServerStats stats = 1;</code>
     */
    io.grpc.benchmarks.proto.Stats.ServerStats getStats();
    /**
     * <code>.grpc.testing.ServerStats stats = 1;</code>
     */
    io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder getStatsOrBuilder();

    /**
     * <pre>
     * the port bound by the server
     * </pre>
     *
     * <code>int32 port = 2;</code>
     */
    int getPort();

    /**
     * <pre>
     * Number of cores available to the server
     * </pre>
     *
     * <code>int32 cores = 3;</code>
     */
    int getCores();
  }
  /**
   * Protobuf type {@code grpc.testing.ServerStatus}
   */
  public  static final class ServerStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ServerStatus)
      ServerStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServerStatus.newBuilder() to construct.
    private ServerStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerStatus() {
      port_ = 0;
      cores_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ServerStatus(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.grpc.benchmarks.proto.Stats.ServerStats.Builder subBuilder = null;
              if (stats_ != null) {
                subBuilder = stats_.toBuilder();
              }
              stats_ = input.readMessage(io.grpc.benchmarks.proto.Stats.ServerStats.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(stats_);
                stats_ = subBuilder.buildPartial();
              }

              break;
            }
            case 16: {

              port_ = input.readInt32();
              break;
            }
            case 24: {

              cores_ = input.readInt32();
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerStatus_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ServerStatus.class, io.grpc.benchmarks.proto.Control.ServerStatus.Builder.class);
    }

    public static final int STATS_FIELD_NUMBER = 1;
    private io.grpc.benchmarks.proto.Stats.ServerStats stats_;
    /**
     * <code>.grpc.testing.ServerStats stats = 1;</code>
     */
    public boolean hasStats() {
      return stats_ != null;
    }
    /**
     * <code>.grpc.testing.ServerStats stats = 1;</code>
     */
    public io.grpc.benchmarks.proto.Stats.ServerStats getStats() {
      return stats_ == null ? io.grpc.benchmarks.proto.Stats.ServerStats.getDefaultInstance() : stats_;
    }
    /**
     * <code>.grpc.testing.ServerStats stats = 1;</code>
     */
    public io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder getStatsOrBuilder() {
      return getStats();
    }

    public static final int PORT_FIELD_NUMBER = 2;
    private int port_;
    /**
     * <pre>
     * the port bound by the server
     * </pre>
     *
     * <code>int32 port = 2;</code>
     */
    public int getPort() {
      return port_;
    }

    public static final int CORES_FIELD_NUMBER = 3;
    private int cores_;
    /**
     * <pre>
     * Number of cores available to the server
     * </pre>
     *
     * <code>int32 cores = 3;</code>
     */
    public int getCores() {
      return cores_;
    }

    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 {
      if (stats_ != null) {
        output.writeMessage(1, getStats());
      }
      if (port_ != 0) {
        output.writeInt32(2, port_);
      }
      if (cores_ != 0) {
        output.writeInt32(3, cores_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (stats_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStats());
      }
      if (port_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, port_);
      }
      if (cores_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, cores_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ServerStatus)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ServerStatus other = (io.grpc.benchmarks.proto.Control.ServerStatus) obj;

      boolean result = true;
      result = result && (hasStats() == other.hasStats());
      if (hasStats()) {
        result = result && getStats()
            .equals(other.getStats());
      }
      result = result && (getPort()
          == other.getPort());
      result = result && (getCores()
          == other.getCores());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStats()) {
        hash = (37 * hash) + STATS_FIELD_NUMBER;
        hash = (53 * hash) + getStats().hashCode();
      }
      hash = (37 * hash) + PORT_FIELD_NUMBER;
      hash = (53 * hash) + getPort();
      hash = (37 * hash) + CORES_FIELD_NUMBER;
      hash = (53 * hash) + getCores();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ServerStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus 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 io.grpc.benchmarks.proto.Control.ServerStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus 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 io.grpc.benchmarks.proto.Control.ServerStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ServerStatus 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(io.grpc.benchmarks.proto.Control.ServerStatus 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;
    }
    /**
     * Protobuf type {@code grpc.testing.ServerStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ServerStatus)
        io.grpc.benchmarks.proto.Control.ServerStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerStatus_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ServerStatus.class, io.grpc.benchmarks.proto.Control.ServerStatus.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ServerStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (statsBuilder_ == null) {
          stats_ = null;
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }
        port_ = 0;

        cores_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ServerStatus_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ServerStatus getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ServerStatus.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ServerStatus build() {
        io.grpc.benchmarks.proto.Control.ServerStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ServerStatus buildPartial() {
        io.grpc.benchmarks.proto.Control.ServerStatus result = new io.grpc.benchmarks.proto.Control.ServerStatus(this);
        if (statsBuilder_ == null) {
          result.stats_ = stats_;
        } else {
          result.stats_ = statsBuilder_.build();
        }
        result.port_ = port_;
        result.cores_ = cores_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ServerStatus) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ServerStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ServerStatus other) {
        if (other == io.grpc.benchmarks.proto.Control.ServerStatus.getDefaultInstance()) return this;
        if (other.hasStats()) {
          mergeStats(other.getStats());
        }
        if (other.getPort() != 0) {
          setPort(other.getPort());
        }
        if (other.getCores() != 0) {
          setCores(other.getCores());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ServerStatus parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ServerStatus) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private io.grpc.benchmarks.proto.Stats.ServerStats stats_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.ServerStats, io.grpc.benchmarks.proto.Stats.ServerStats.Builder, io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder> statsBuilder_;
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      public boolean hasStats() {
        return statsBuilder_ != null || stats_ != null;
      }
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ServerStats getStats() {
        if (statsBuilder_ == null) {
          return stats_ == null ? io.grpc.benchmarks.proto.Stats.ServerStats.getDefaultInstance() : stats_;
        } else {
          return statsBuilder_.getMessage();
        }
      }
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      public Builder setStats(io.grpc.benchmarks.proto.Stats.ServerStats value) {
        if (statsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stats_ = value;
          onChanged();
        } else {
          statsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      public Builder setStats(
          io.grpc.benchmarks.proto.Stats.ServerStats.Builder builderForValue) {
        if (statsBuilder_ == null) {
          stats_ = builderForValue.build();
          onChanged();
        } else {
          statsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      public Builder mergeStats(io.grpc.benchmarks.proto.Stats.ServerStats value) {
        if (statsBuilder_ == null) {
          if (stats_ != null) {
            stats_ =
              io.grpc.benchmarks.proto.Stats.ServerStats.newBuilder(stats_).mergeFrom(value).buildPartial();
          } else {
            stats_ = value;
          }
          onChanged();
        } else {
          statsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      public Builder clearStats() {
        if (statsBuilder_ == null) {
          stats_ = null;
          onChanged();
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ServerStats.Builder getStatsBuilder() {
        
        onChanged();
        return getStatsFieldBuilder().getBuilder();
      }
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder getStatsOrBuilder() {
        if (statsBuilder_ != null) {
          return statsBuilder_.getMessageOrBuilder();
        } else {
          return stats_ == null ?
              io.grpc.benchmarks.proto.Stats.ServerStats.getDefaultInstance() : stats_;
        }
      }
      /**
       * <code>.grpc.testing.ServerStats stats = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.ServerStats, io.grpc.benchmarks.proto.Stats.ServerStats.Builder, io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder> 
          getStatsFieldBuilder() {
        if (statsBuilder_ == null) {
          statsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Stats.ServerStats, io.grpc.benchmarks.proto.Stats.ServerStats.Builder, io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder>(
                  getStats(),
                  getParentForChildren(),
                  isClean());
          stats_ = null;
        }
        return statsBuilder_;
      }

      private int port_ ;
      /**
       * <pre>
       * the port bound by the server
       * </pre>
       *
       * <code>int32 port = 2;</code>
       */
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * the port bound by the server
       * </pre>
       *
       * <code>int32 port = 2;</code>
       */
      public Builder setPort(int value) {
        
        port_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the port bound by the server
       * </pre>
       *
       * <code>int32 port = 2;</code>
       */
      public Builder clearPort() {
        
        port_ = 0;
        onChanged();
        return this;
      }

      private int cores_ ;
      /**
       * <pre>
       * Number of cores available to the server
       * </pre>
       *
       * <code>int32 cores = 3;</code>
       */
      public int getCores() {
        return cores_;
      }
      /**
       * <pre>
       * Number of cores available to the server
       * </pre>
       *
       * <code>int32 cores = 3;</code>
       */
      public Builder setCores(int value) {
        
        cores_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of cores available to the server
       * </pre>
       *
       * <code>int32 cores = 3;</code>
       */
      public Builder clearCores() {
        
        cores_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ServerStatus)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ServerStatus)
    private static final io.grpc.benchmarks.proto.Control.ServerStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ServerStatus();
    }

    public static io.grpc.benchmarks.proto.Control.ServerStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ServerStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CoreRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.CoreRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code grpc.testing.CoreRequest}
   */
  public  static final class CoreRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.CoreRequest)
      CoreRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CoreRequest.newBuilder() to construct.
    private CoreRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CoreRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CoreRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.CoreRequest.class, io.grpc.benchmarks.proto.Control.CoreRequest.Builder.class);
    }

    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 {
      unknownFields.writeTo(output);
    }

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

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.CoreRequest)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.CoreRequest other = (io.grpc.benchmarks.proto.Control.CoreRequest) obj;

      boolean result = true;
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.CoreRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest 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 io.grpc.benchmarks.proto.Control.CoreRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest 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 io.grpc.benchmarks.proto.Control.CoreRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.CoreRequest 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(io.grpc.benchmarks.proto.Control.CoreRequest 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;
    }
    /**
     * Protobuf type {@code grpc.testing.CoreRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.CoreRequest)
        io.grpc.benchmarks.proto.Control.CoreRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.CoreRequest.class, io.grpc.benchmarks.proto.Control.CoreRequest.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.CoreRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreRequest_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.CoreRequest getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.CoreRequest.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.CoreRequest build() {
        io.grpc.benchmarks.proto.Control.CoreRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.CoreRequest buildPartial() {
        io.grpc.benchmarks.proto.Control.CoreRequest result = new io.grpc.benchmarks.proto.Control.CoreRequest(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.CoreRequest) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.CoreRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.CoreRequest other) {
        if (other == io.grpc.benchmarks.proto.Control.CoreRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.CoreRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.CoreRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.CoreRequest)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.CoreRequest)
    private static final io.grpc.benchmarks.proto.Control.CoreRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.CoreRequest();
    }

    public static io.grpc.benchmarks.proto.Control.CoreRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.CoreRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CoreResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.CoreResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Number of cores available on the server
     * </pre>
     *
     * <code>int32 cores = 1;</code>
     */
    int getCores();
  }
  /**
   * Protobuf type {@code grpc.testing.CoreResponse}
   */
  public  static final class CoreResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.CoreResponse)
      CoreResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CoreResponse.newBuilder() to construct.
    private CoreResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CoreResponse() {
      cores_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CoreResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              cores_ = input.readInt32();
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.CoreResponse.class, io.grpc.benchmarks.proto.Control.CoreResponse.Builder.class);
    }

    public static final int CORES_FIELD_NUMBER = 1;
    private int cores_;
    /**
     * <pre>
     * Number of cores available on the server
     * </pre>
     *
     * <code>int32 cores = 1;</code>
     */
    public int getCores() {
      return cores_;
    }

    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 {
      if (cores_ != 0) {
        output.writeInt32(1, cores_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (cores_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, cores_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.CoreResponse)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.CoreResponse other = (io.grpc.benchmarks.proto.Control.CoreResponse) obj;

      boolean result = true;
      result = result && (getCores()
          == other.getCores());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CORES_FIELD_NUMBER;
      hash = (53 * hash) + getCores();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.CoreResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse 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 io.grpc.benchmarks.proto.Control.CoreResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse 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 io.grpc.benchmarks.proto.Control.CoreResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.CoreResponse 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(io.grpc.benchmarks.proto.Control.CoreResponse 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;
    }
    /**
     * Protobuf type {@code grpc.testing.CoreResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.CoreResponse)
        io.grpc.benchmarks.proto.Control.CoreResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.CoreResponse.class, io.grpc.benchmarks.proto.Control.CoreResponse.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.CoreResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        cores_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_CoreResponse_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.CoreResponse getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.CoreResponse.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.CoreResponse build() {
        io.grpc.benchmarks.proto.Control.CoreResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.CoreResponse buildPartial() {
        io.grpc.benchmarks.proto.Control.CoreResponse result = new io.grpc.benchmarks.proto.Control.CoreResponse(this);
        result.cores_ = cores_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.CoreResponse) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.CoreResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.CoreResponse other) {
        if (other == io.grpc.benchmarks.proto.Control.CoreResponse.getDefaultInstance()) return this;
        if (other.getCores() != 0) {
          setCores(other.getCores());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.CoreResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.CoreResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int cores_ ;
      /**
       * <pre>
       * Number of cores available on the server
       * </pre>
       *
       * <code>int32 cores = 1;</code>
       */
      public int getCores() {
        return cores_;
      }
      /**
       * <pre>
       * Number of cores available on the server
       * </pre>
       *
       * <code>int32 cores = 1;</code>
       */
      public Builder setCores(int value) {
        
        cores_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of cores available on the server
       * </pre>
       *
       * <code>int32 cores = 1;</code>
       */
      public Builder clearCores() {
        
        cores_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.CoreResponse)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.CoreResponse)
    private static final io.grpc.benchmarks.proto.Control.CoreResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.CoreResponse();
    }

    public static io.grpc.benchmarks.proto.Control.CoreResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.CoreResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VoidOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.Void)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code grpc.testing.Void}
   */
  public  static final class Void extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.Void)
      VoidOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Void.newBuilder() to construct.
    private Void(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Void() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Void(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Void_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Void_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.Void.class, io.grpc.benchmarks.proto.Control.Void.Builder.class);
    }

    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 {
      unknownFields.writeTo(output);
    }

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

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.Void)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.Void other = (io.grpc.benchmarks.proto.Control.Void) obj;

      boolean result = true;
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.Void parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Void parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Void parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Void parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Void parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Void parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Void parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Void 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 io.grpc.benchmarks.proto.Control.Void parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Void 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 io.grpc.benchmarks.proto.Control.Void parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Void 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(io.grpc.benchmarks.proto.Control.Void 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;
    }
    /**
     * Protobuf type {@code grpc.testing.Void}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.Void)
        io.grpc.benchmarks.proto.Control.VoidOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Void_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Void_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.Void.class, io.grpc.benchmarks.proto.Control.Void.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.Void.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Void_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.Void getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.Void.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.Void build() {
        io.grpc.benchmarks.proto.Control.Void result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.Void buildPartial() {
        io.grpc.benchmarks.proto.Control.Void result = new io.grpc.benchmarks.proto.Control.Void(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.Void) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.Void)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.Void other) {
        if (other == io.grpc.benchmarks.proto.Control.Void.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.Void parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.Void) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.Void)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.Void)
    private static final io.grpc.benchmarks.proto.Control.Void DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.Void();
    }

    public static io.grpc.benchmarks.proto.Control.Void getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.Void getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScenarioOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.Scenario)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Human readable name for this scenario
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * Human readable name for this scenario
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Client configuration
     * </pre>
     *
     * <code>.grpc.testing.ClientConfig client_config = 2;</code>
     */
    boolean hasClientConfig();
    /**
     * <pre>
     * Client configuration
     * </pre>
     *
     * <code>.grpc.testing.ClientConfig client_config = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.ClientConfig getClientConfig();
    /**
     * <pre>
     * Client configuration
     * </pre>
     *
     * <code>.grpc.testing.ClientConfig client_config = 2;</code>
     */
    io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder getClientConfigOrBuilder();

    /**
     * <pre>
     * Number of clients to start for the test
     * </pre>
     *
     * <code>int32 num_clients = 3;</code>
     */
    int getNumClients();

    /**
     * <pre>
     * Server configuration
     * </pre>
     *
     * <code>.grpc.testing.ServerConfig server_config = 4;</code>
     */
    boolean hasServerConfig();
    /**
     * <pre>
     * Server configuration
     * </pre>
     *
     * <code>.grpc.testing.ServerConfig server_config = 4;</code>
     */
    io.grpc.benchmarks.proto.Control.ServerConfig getServerConfig();
    /**
     * <pre>
     * Server configuration
     * </pre>
     *
     * <code>.grpc.testing.ServerConfig server_config = 4;</code>
     */
    io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder getServerConfigOrBuilder();

    /**
     * <pre>
     * Number of servers to start for the test
     * </pre>
     *
     * <code>int32 num_servers = 5;</code>
     */
    int getNumServers();

    /**
     * <pre>
     * Warmup period, in seconds
     * </pre>
     *
     * <code>int32 warmup_seconds = 6;</code>
     */
    int getWarmupSeconds();

    /**
     * <pre>
     * Benchmark time, in seconds
     * </pre>
     *
     * <code>int32 benchmark_seconds = 7;</code>
     */
    int getBenchmarkSeconds();

    /**
     * <pre>
     * Number of workers to spawn locally (usually zero)
     * </pre>
     *
     * <code>int32 spawn_local_worker_count = 8;</code>
     */
    int getSpawnLocalWorkerCount();
  }
  /**
   * <pre>
   * A single performance scenario: input to qps_json_driver
   * </pre>
   *
   * Protobuf type {@code grpc.testing.Scenario}
   */
  public  static final class Scenario extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.Scenario)
      ScenarioOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Scenario.newBuilder() to construct.
    private Scenario(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Scenario() {
      name_ = "";
      numClients_ = 0;
      numServers_ = 0;
      warmupSeconds_ = 0;
      benchmarkSeconds_ = 0;
      spawnLocalWorkerCount_ = 0;
    }

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

              name_ = s;
              break;
            }
            case 18: {
              io.grpc.benchmarks.proto.Control.ClientConfig.Builder subBuilder = null;
              if (clientConfig_ != null) {
                subBuilder = clientConfig_.toBuilder();
              }
              clientConfig_ = input.readMessage(io.grpc.benchmarks.proto.Control.ClientConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(clientConfig_);
                clientConfig_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              numClients_ = input.readInt32();
              break;
            }
            case 34: {
              io.grpc.benchmarks.proto.Control.ServerConfig.Builder subBuilder = null;
              if (serverConfig_ != null) {
                subBuilder = serverConfig_.toBuilder();
              }
              serverConfig_ = input.readMessage(io.grpc.benchmarks.proto.Control.ServerConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(serverConfig_);
                serverConfig_ = subBuilder.buildPartial();
              }

              break;
            }
            case 40: {

              numServers_ = input.readInt32();
              break;
            }
            case 48: {

              warmupSeconds_ = input.readInt32();
              break;
            }
            case 56: {

              benchmarkSeconds_ = input.readInt32();
              break;
            }
            case 64: {

              spawnLocalWorkerCount_ = input.readInt32();
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenario_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenario_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.Scenario.class, io.grpc.benchmarks.proto.Control.Scenario.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Human readable name for this scenario
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    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;
      }
    }
    /**
     * <pre>
     * Human readable name for this scenario
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    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 CLIENT_CONFIG_FIELD_NUMBER = 2;
    private io.grpc.benchmarks.proto.Control.ClientConfig clientConfig_;
    /**
     * <pre>
     * Client configuration
     * </pre>
     *
     * <code>.grpc.testing.ClientConfig client_config = 2;</code>
     */
    public boolean hasClientConfig() {
      return clientConfig_ != null;
    }
    /**
     * <pre>
     * Client configuration
     * </pre>
     *
     * <code>.grpc.testing.ClientConfig client_config = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.ClientConfig getClientConfig() {
      return clientConfig_ == null ? io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance() : clientConfig_;
    }
    /**
     * <pre>
     * Client configuration
     * </pre>
     *
     * <code>.grpc.testing.ClientConfig client_config = 2;</code>
     */
    public io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder getClientConfigOrBuilder() {
      return getClientConfig();
    }

    public static final int NUM_CLIENTS_FIELD_NUMBER = 3;
    private int numClients_;
    /**
     * <pre>
     * Number of clients to start for the test
     * </pre>
     *
     * <code>int32 num_clients = 3;</code>
     */
    public int getNumClients() {
      return numClients_;
    }

    public static final int SERVER_CONFIG_FIELD_NUMBER = 4;
    private io.grpc.benchmarks.proto.Control.ServerConfig serverConfig_;
    /**
     * <pre>
     * Server configuration
     * </pre>
     *
     * <code>.grpc.testing.ServerConfig server_config = 4;</code>
     */
    public boolean hasServerConfig() {
      return serverConfig_ != null;
    }
    /**
     * <pre>
     * Server configuration
     * </pre>
     *
     * <code>.grpc.testing.ServerConfig server_config = 4;</code>
     */
    public io.grpc.benchmarks.proto.Control.ServerConfig getServerConfig() {
      return serverConfig_ == null ? io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance() : serverConfig_;
    }
    /**
     * <pre>
     * Server configuration
     * </pre>
     *
     * <code>.grpc.testing.ServerConfig server_config = 4;</code>
     */
    public io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder getServerConfigOrBuilder() {
      return getServerConfig();
    }

    public static final int NUM_SERVERS_FIELD_NUMBER = 5;
    private int numServers_;
    /**
     * <pre>
     * Number of servers to start for the test
     * </pre>
     *
     * <code>int32 num_servers = 5;</code>
     */
    public int getNumServers() {
      return numServers_;
    }

    public static final int WARMUP_SECONDS_FIELD_NUMBER = 6;
    private int warmupSeconds_;
    /**
     * <pre>
     * Warmup period, in seconds
     * </pre>
     *
     * <code>int32 warmup_seconds = 6;</code>
     */
    public int getWarmupSeconds() {
      return warmupSeconds_;
    }

    public static final int BENCHMARK_SECONDS_FIELD_NUMBER = 7;
    private int benchmarkSeconds_;
    /**
     * <pre>
     * Benchmark time, in seconds
     * </pre>
     *
     * <code>int32 benchmark_seconds = 7;</code>
     */
    public int getBenchmarkSeconds() {
      return benchmarkSeconds_;
    }

    public static final int SPAWN_LOCAL_WORKER_COUNT_FIELD_NUMBER = 8;
    private int spawnLocalWorkerCount_;
    /**
     * <pre>
     * Number of workers to spawn locally (usually zero)
     * </pre>
     *
     * <code>int32 spawn_local_worker_count = 8;</code>
     */
    public int getSpawnLocalWorkerCount() {
      return spawnLocalWorkerCount_;
    }

    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 {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (clientConfig_ != null) {
        output.writeMessage(2, getClientConfig());
      }
      if (numClients_ != 0) {
        output.writeInt32(3, numClients_);
      }
      if (serverConfig_ != null) {
        output.writeMessage(4, getServerConfig());
      }
      if (numServers_ != 0) {
        output.writeInt32(5, numServers_);
      }
      if (warmupSeconds_ != 0) {
        output.writeInt32(6, warmupSeconds_);
      }
      if (benchmarkSeconds_ != 0) {
        output.writeInt32(7, benchmarkSeconds_);
      }
      if (spawnLocalWorkerCount_ != 0) {
        output.writeInt32(8, spawnLocalWorkerCount_);
      }
      unknownFields.writeTo(output);
    }

    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 (clientConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getClientConfig());
      }
      if (numClients_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, numClients_);
      }
      if (serverConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getServerConfig());
      }
      if (numServers_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, numServers_);
      }
      if (warmupSeconds_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, warmupSeconds_);
      }
      if (benchmarkSeconds_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, benchmarkSeconds_);
      }
      if (spawnLocalWorkerCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, spawnLocalWorkerCount_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.Scenario)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.Scenario other = (io.grpc.benchmarks.proto.Control.Scenario) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && (hasClientConfig() == other.hasClientConfig());
      if (hasClientConfig()) {
        result = result && getClientConfig()
            .equals(other.getClientConfig());
      }
      result = result && (getNumClients()
          == other.getNumClients());
      result = result && (hasServerConfig() == other.hasServerConfig());
      if (hasServerConfig()) {
        result = result && getServerConfig()
            .equals(other.getServerConfig());
      }
      result = result && (getNumServers()
          == other.getNumServers());
      result = result && (getWarmupSeconds()
          == other.getWarmupSeconds());
      result = result && (getBenchmarkSeconds()
          == other.getBenchmarkSeconds());
      result = result && (getSpawnLocalWorkerCount()
          == other.getSpawnLocalWorkerCount());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasClientConfig()) {
        hash = (37 * hash) + CLIENT_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getClientConfig().hashCode();
      }
      hash = (37 * hash) + NUM_CLIENTS_FIELD_NUMBER;
      hash = (53 * hash) + getNumClients();
      if (hasServerConfig()) {
        hash = (37 * hash) + SERVER_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getServerConfig().hashCode();
      }
      hash = (37 * hash) + NUM_SERVERS_FIELD_NUMBER;
      hash = (53 * hash) + getNumServers();
      hash = (37 * hash) + WARMUP_SECONDS_FIELD_NUMBER;
      hash = (53 * hash) + getWarmupSeconds();
      hash = (37 * hash) + BENCHMARK_SECONDS_FIELD_NUMBER;
      hash = (53 * hash) + getBenchmarkSeconds();
      hash = (37 * hash) + SPAWN_LOCAL_WORKER_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getSpawnLocalWorkerCount();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.Scenario parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario 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 io.grpc.benchmarks.proto.Control.Scenario parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario 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 io.grpc.benchmarks.proto.Control.Scenario parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Scenario 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(io.grpc.benchmarks.proto.Control.Scenario 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;
    }
    /**
     * <pre>
     * A single performance scenario: input to qps_json_driver
     * </pre>
     *
     * Protobuf type {@code grpc.testing.Scenario}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.Scenario)
        io.grpc.benchmarks.proto.Control.ScenarioOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenario_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenario_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.Scenario.class, io.grpc.benchmarks.proto.Control.Scenario.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.Scenario.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        if (clientConfigBuilder_ == null) {
          clientConfig_ = null;
        } else {
          clientConfig_ = null;
          clientConfigBuilder_ = null;
        }
        numClients_ = 0;

        if (serverConfigBuilder_ == null) {
          serverConfig_ = null;
        } else {
          serverConfig_ = null;
          serverConfigBuilder_ = null;
        }
        numServers_ = 0;

        warmupSeconds_ = 0;

        benchmarkSeconds_ = 0;

        spawnLocalWorkerCount_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenario_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.Scenario getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.Scenario.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.Scenario build() {
        io.grpc.benchmarks.proto.Control.Scenario result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.Scenario buildPartial() {
        io.grpc.benchmarks.proto.Control.Scenario result = new io.grpc.benchmarks.proto.Control.Scenario(this);
        result.name_ = name_;
        if (clientConfigBuilder_ == null) {
          result.clientConfig_ = clientConfig_;
        } else {
          result.clientConfig_ = clientConfigBuilder_.build();
        }
        result.numClients_ = numClients_;
        if (serverConfigBuilder_ == null) {
          result.serverConfig_ = serverConfig_;
        } else {
          result.serverConfig_ = serverConfigBuilder_.build();
        }
        result.numServers_ = numServers_;
        result.warmupSeconds_ = warmupSeconds_;
        result.benchmarkSeconds_ = benchmarkSeconds_;
        result.spawnLocalWorkerCount_ = spawnLocalWorkerCount_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.Scenario) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.Scenario)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.Scenario other) {
        if (other == io.grpc.benchmarks.proto.Control.Scenario.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasClientConfig()) {
          mergeClientConfig(other.getClientConfig());
        }
        if (other.getNumClients() != 0) {
          setNumClients(other.getNumClients());
        }
        if (other.hasServerConfig()) {
          mergeServerConfig(other.getServerConfig());
        }
        if (other.getNumServers() != 0) {
          setNumServers(other.getNumServers());
        }
        if (other.getWarmupSeconds() != 0) {
          setWarmupSeconds(other.getWarmupSeconds());
        }
        if (other.getBenchmarkSeconds() != 0) {
          setBenchmarkSeconds(other.getBenchmarkSeconds());
        }
        if (other.getSpawnLocalWorkerCount() != 0) {
          setSpawnLocalWorkerCount(other.getSpawnLocalWorkerCount());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.Scenario parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.Scenario) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Human readable name for this scenario
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      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;
        }
      }
      /**
       * <pre>
       * Human readable name for this scenario
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      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;
        }
      }
      /**
       * <pre>
       * Human readable name for this scenario
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Human readable name for this scenario
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Human readable name for this scenario
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private io.grpc.benchmarks.proto.Control.ClientConfig clientConfig_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ClientConfig, io.grpc.benchmarks.proto.Control.ClientConfig.Builder, io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder> clientConfigBuilder_;
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      public boolean hasClientConfig() {
        return clientConfigBuilder_ != null || clientConfig_ != null;
      }
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClientConfig getClientConfig() {
        if (clientConfigBuilder_ == null) {
          return clientConfig_ == null ? io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance() : clientConfig_;
        } else {
          return clientConfigBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      public Builder setClientConfig(io.grpc.benchmarks.proto.Control.ClientConfig value) {
        if (clientConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clientConfig_ = value;
          onChanged();
        } else {
          clientConfigBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      public Builder setClientConfig(
          io.grpc.benchmarks.proto.Control.ClientConfig.Builder builderForValue) {
        if (clientConfigBuilder_ == null) {
          clientConfig_ = builderForValue.build();
          onChanged();
        } else {
          clientConfigBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      public Builder mergeClientConfig(io.grpc.benchmarks.proto.Control.ClientConfig value) {
        if (clientConfigBuilder_ == null) {
          if (clientConfig_ != null) {
            clientConfig_ =
              io.grpc.benchmarks.proto.Control.ClientConfig.newBuilder(clientConfig_).mergeFrom(value).buildPartial();
          } else {
            clientConfig_ = value;
          }
          onChanged();
        } else {
          clientConfigBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      public Builder clearClientConfig() {
        if (clientConfigBuilder_ == null) {
          clientConfig_ = null;
          onChanged();
        } else {
          clientConfig_ = null;
          clientConfigBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClientConfig.Builder getClientConfigBuilder() {
        
        onChanged();
        return getClientConfigFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      public io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder getClientConfigOrBuilder() {
        if (clientConfigBuilder_ != null) {
          return clientConfigBuilder_.getMessageOrBuilder();
        } else {
          return clientConfig_ == null ?
              io.grpc.benchmarks.proto.Control.ClientConfig.getDefaultInstance() : clientConfig_;
        }
      }
      /**
       * <pre>
       * Client configuration
       * </pre>
       *
       * <code>.grpc.testing.ClientConfig client_config = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ClientConfig, io.grpc.benchmarks.proto.Control.ClientConfig.Builder, io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder> 
          getClientConfigFieldBuilder() {
        if (clientConfigBuilder_ == null) {
          clientConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.ClientConfig, io.grpc.benchmarks.proto.Control.ClientConfig.Builder, io.grpc.benchmarks.proto.Control.ClientConfigOrBuilder>(
                  getClientConfig(),
                  getParentForChildren(),
                  isClean());
          clientConfig_ = null;
        }
        return clientConfigBuilder_;
      }

      private int numClients_ ;
      /**
       * <pre>
       * Number of clients to start for the test
       * </pre>
       *
       * <code>int32 num_clients = 3;</code>
       */
      public int getNumClients() {
        return numClients_;
      }
      /**
       * <pre>
       * Number of clients to start for the test
       * </pre>
       *
       * <code>int32 num_clients = 3;</code>
       */
      public Builder setNumClients(int value) {
        
        numClients_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of clients to start for the test
       * </pre>
       *
       * <code>int32 num_clients = 3;</code>
       */
      public Builder clearNumClients() {
        
        numClients_ = 0;
        onChanged();
        return this;
      }

      private io.grpc.benchmarks.proto.Control.ServerConfig serverConfig_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ServerConfig, io.grpc.benchmarks.proto.Control.ServerConfig.Builder, io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder> serverConfigBuilder_;
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      public boolean hasServerConfig() {
        return serverConfigBuilder_ != null || serverConfig_ != null;
      }
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      public io.grpc.benchmarks.proto.Control.ServerConfig getServerConfig() {
        if (serverConfigBuilder_ == null) {
          return serverConfig_ == null ? io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance() : serverConfig_;
        } else {
          return serverConfigBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      public Builder setServerConfig(io.grpc.benchmarks.proto.Control.ServerConfig value) {
        if (serverConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          serverConfig_ = value;
          onChanged();
        } else {
          serverConfigBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      public Builder setServerConfig(
          io.grpc.benchmarks.proto.Control.ServerConfig.Builder builderForValue) {
        if (serverConfigBuilder_ == null) {
          serverConfig_ = builderForValue.build();
          onChanged();
        } else {
          serverConfigBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      public Builder mergeServerConfig(io.grpc.benchmarks.proto.Control.ServerConfig value) {
        if (serverConfigBuilder_ == null) {
          if (serverConfig_ != null) {
            serverConfig_ =
              io.grpc.benchmarks.proto.Control.ServerConfig.newBuilder(serverConfig_).mergeFrom(value).buildPartial();
          } else {
            serverConfig_ = value;
          }
          onChanged();
        } else {
          serverConfigBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      public Builder clearServerConfig() {
        if (serverConfigBuilder_ == null) {
          serverConfig_ = null;
          onChanged();
        } else {
          serverConfig_ = null;
          serverConfigBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      public io.grpc.benchmarks.proto.Control.ServerConfig.Builder getServerConfigBuilder() {
        
        onChanged();
        return getServerConfigFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      public io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder getServerConfigOrBuilder() {
        if (serverConfigBuilder_ != null) {
          return serverConfigBuilder_.getMessageOrBuilder();
        } else {
          return serverConfig_ == null ?
              io.grpc.benchmarks.proto.Control.ServerConfig.getDefaultInstance() : serverConfig_;
        }
      }
      /**
       * <pre>
       * Server configuration
       * </pre>
       *
       * <code>.grpc.testing.ServerConfig server_config = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ServerConfig, io.grpc.benchmarks.proto.Control.ServerConfig.Builder, io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder> 
          getServerConfigFieldBuilder() {
        if (serverConfigBuilder_ == null) {
          serverConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.ServerConfig, io.grpc.benchmarks.proto.Control.ServerConfig.Builder, io.grpc.benchmarks.proto.Control.ServerConfigOrBuilder>(
                  getServerConfig(),
                  getParentForChildren(),
                  isClean());
          serverConfig_ = null;
        }
        return serverConfigBuilder_;
      }

      private int numServers_ ;
      /**
       * <pre>
       * Number of servers to start for the test
       * </pre>
       *
       * <code>int32 num_servers = 5;</code>
       */
      public int getNumServers() {
        return numServers_;
      }
      /**
       * <pre>
       * Number of servers to start for the test
       * </pre>
       *
       * <code>int32 num_servers = 5;</code>
       */
      public Builder setNumServers(int value) {
        
        numServers_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of servers to start for the test
       * </pre>
       *
       * <code>int32 num_servers = 5;</code>
       */
      public Builder clearNumServers() {
        
        numServers_ = 0;
        onChanged();
        return this;
      }

      private int warmupSeconds_ ;
      /**
       * <pre>
       * Warmup period, in seconds
       * </pre>
       *
       * <code>int32 warmup_seconds = 6;</code>
       */
      public int getWarmupSeconds() {
        return warmupSeconds_;
      }
      /**
       * <pre>
       * Warmup period, in seconds
       * </pre>
       *
       * <code>int32 warmup_seconds = 6;</code>
       */
      public Builder setWarmupSeconds(int value) {
        
        warmupSeconds_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Warmup period, in seconds
       * </pre>
       *
       * <code>int32 warmup_seconds = 6;</code>
       */
      public Builder clearWarmupSeconds() {
        
        warmupSeconds_ = 0;
        onChanged();
        return this;
      }

      private int benchmarkSeconds_ ;
      /**
       * <pre>
       * Benchmark time, in seconds
       * </pre>
       *
       * <code>int32 benchmark_seconds = 7;</code>
       */
      public int getBenchmarkSeconds() {
        return benchmarkSeconds_;
      }
      /**
       * <pre>
       * Benchmark time, in seconds
       * </pre>
       *
       * <code>int32 benchmark_seconds = 7;</code>
       */
      public Builder setBenchmarkSeconds(int value) {
        
        benchmarkSeconds_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Benchmark time, in seconds
       * </pre>
       *
       * <code>int32 benchmark_seconds = 7;</code>
       */
      public Builder clearBenchmarkSeconds() {
        
        benchmarkSeconds_ = 0;
        onChanged();
        return this;
      }

      private int spawnLocalWorkerCount_ ;
      /**
       * <pre>
       * Number of workers to spawn locally (usually zero)
       * </pre>
       *
       * <code>int32 spawn_local_worker_count = 8;</code>
       */
      public int getSpawnLocalWorkerCount() {
        return spawnLocalWorkerCount_;
      }
      /**
       * <pre>
       * Number of workers to spawn locally (usually zero)
       * </pre>
       *
       * <code>int32 spawn_local_worker_count = 8;</code>
       */
      public Builder setSpawnLocalWorkerCount(int value) {
        
        spawnLocalWorkerCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of workers to spawn locally (usually zero)
       * </pre>
       *
       * <code>int32 spawn_local_worker_count = 8;</code>
       */
      public Builder clearSpawnLocalWorkerCount() {
        
        spawnLocalWorkerCount_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.Scenario)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.Scenario)
    private static final io.grpc.benchmarks.proto.Control.Scenario DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.Scenario();
    }

    public static io.grpc.benchmarks.proto.Control.Scenario getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.Scenario getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScenariosOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.Scenarios)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    java.util.List<io.grpc.benchmarks.proto.Control.Scenario> 
        getScenariosList();
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.Scenario getScenarios(int index);
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    int getScenariosCount();
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    java.util.List<? extends io.grpc.benchmarks.proto.Control.ScenarioOrBuilder> 
        getScenariosOrBuilderList();
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ScenarioOrBuilder getScenariosOrBuilder(
        int index);
  }
  /**
   * <pre>
   * A set of scenarios to be run with qps_json_driver
   * </pre>
   *
   * Protobuf type {@code grpc.testing.Scenarios}
   */
  public  static final class Scenarios extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.Scenarios)
      ScenariosOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Scenarios.newBuilder() to construct.
    private Scenarios(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Scenarios() {
      scenarios_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Scenarios(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                scenarios_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Control.Scenario>();
                mutable_bitField0_ |= 0x00000001;
              }
              scenarios_.add(
                  input.readMessage(io.grpc.benchmarks.proto.Control.Scenario.parser(), extensionRegistry));
              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_ & 0x00000001) == 0x00000001)) {
          scenarios_ = java.util.Collections.unmodifiableList(scenarios_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenarios_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenarios_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.Scenarios.class, io.grpc.benchmarks.proto.Control.Scenarios.Builder.class);
    }

    public static final int SCENARIOS_FIELD_NUMBER = 1;
    private java.util.List<io.grpc.benchmarks.proto.Control.Scenario> scenarios_;
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    public java.util.List<io.grpc.benchmarks.proto.Control.Scenario> getScenariosList() {
      return scenarios_;
    }
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    public java.util.List<? extends io.grpc.benchmarks.proto.Control.ScenarioOrBuilder> 
        getScenariosOrBuilderList() {
      return scenarios_;
    }
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    public int getScenariosCount() {
      return scenarios_.size();
    }
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.Scenario getScenarios(int index) {
      return scenarios_.get(index);
    }
    /**
     * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ScenarioOrBuilder getScenariosOrBuilder(
        int index) {
      return scenarios_.get(index);
    }

    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 {
      for (int i = 0; i < scenarios_.size(); i++) {
        output.writeMessage(1, scenarios_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < scenarios_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, scenarios_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.Scenarios)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.Scenarios other = (io.grpc.benchmarks.proto.Control.Scenarios) obj;

      boolean result = true;
      result = result && getScenariosList()
          .equals(other.getScenariosList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getScenariosCount() > 0) {
        hash = (37 * hash) + SCENARIOS_FIELD_NUMBER;
        hash = (53 * hash) + getScenariosList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.Scenarios parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios 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 io.grpc.benchmarks.proto.Control.Scenarios parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios 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 io.grpc.benchmarks.proto.Control.Scenarios parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.Scenarios 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(io.grpc.benchmarks.proto.Control.Scenarios 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;
    }
    /**
     * <pre>
     * A set of scenarios to be run with qps_json_driver
     * </pre>
     *
     * Protobuf type {@code grpc.testing.Scenarios}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.Scenarios)
        io.grpc.benchmarks.proto.Control.ScenariosOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenarios_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenarios_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.Scenarios.class, io.grpc.benchmarks.proto.Control.Scenarios.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.Scenarios.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getScenariosFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (scenariosBuilder_ == null) {
          scenarios_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          scenariosBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_Scenarios_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.Scenarios getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.Scenarios.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.Scenarios build() {
        io.grpc.benchmarks.proto.Control.Scenarios result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.Scenarios buildPartial() {
        io.grpc.benchmarks.proto.Control.Scenarios result = new io.grpc.benchmarks.proto.Control.Scenarios(this);
        int from_bitField0_ = bitField0_;
        if (scenariosBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            scenarios_ = java.util.Collections.unmodifiableList(scenarios_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.scenarios_ = scenarios_;
        } else {
          result.scenarios_ = scenariosBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.Scenarios) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.Scenarios)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.Scenarios other) {
        if (other == io.grpc.benchmarks.proto.Control.Scenarios.getDefaultInstance()) return this;
        if (scenariosBuilder_ == null) {
          if (!other.scenarios_.isEmpty()) {
            if (scenarios_.isEmpty()) {
              scenarios_ = other.scenarios_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureScenariosIsMutable();
              scenarios_.addAll(other.scenarios_);
            }
            onChanged();
          }
        } else {
          if (!other.scenarios_.isEmpty()) {
            if (scenariosBuilder_.isEmpty()) {
              scenariosBuilder_.dispose();
              scenariosBuilder_ = null;
              scenarios_ = other.scenarios_;
              bitField0_ = (bitField0_ & ~0x00000001);
              scenariosBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getScenariosFieldBuilder() : null;
            } else {
              scenariosBuilder_.addAllMessages(other.scenarios_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.Scenarios parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.Scenarios) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<io.grpc.benchmarks.proto.Control.Scenario> scenarios_ =
        java.util.Collections.emptyList();
      private void ensureScenariosIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          scenarios_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Control.Scenario>(scenarios_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.Scenario, io.grpc.benchmarks.proto.Control.Scenario.Builder, io.grpc.benchmarks.proto.Control.ScenarioOrBuilder> scenariosBuilder_;

      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Control.Scenario> getScenariosList() {
        if (scenariosBuilder_ == null) {
          return java.util.Collections.unmodifiableList(scenarios_);
        } else {
          return scenariosBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public int getScenariosCount() {
        if (scenariosBuilder_ == null) {
          return scenarios_.size();
        } else {
          return scenariosBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.Scenario getScenarios(int index) {
        if (scenariosBuilder_ == null) {
          return scenarios_.get(index);
        } else {
          return scenariosBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder setScenarios(
          int index, io.grpc.benchmarks.proto.Control.Scenario value) {
        if (scenariosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScenariosIsMutable();
          scenarios_.set(index, value);
          onChanged();
        } else {
          scenariosBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder setScenarios(
          int index, io.grpc.benchmarks.proto.Control.Scenario.Builder builderForValue) {
        if (scenariosBuilder_ == null) {
          ensureScenariosIsMutable();
          scenarios_.set(index, builderForValue.build());
          onChanged();
        } else {
          scenariosBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder addScenarios(io.grpc.benchmarks.proto.Control.Scenario value) {
        if (scenariosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScenariosIsMutable();
          scenarios_.add(value);
          onChanged();
        } else {
          scenariosBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder addScenarios(
          int index, io.grpc.benchmarks.proto.Control.Scenario value) {
        if (scenariosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureScenariosIsMutable();
          scenarios_.add(index, value);
          onChanged();
        } else {
          scenariosBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder addScenarios(
          io.grpc.benchmarks.proto.Control.Scenario.Builder builderForValue) {
        if (scenariosBuilder_ == null) {
          ensureScenariosIsMutable();
          scenarios_.add(builderForValue.build());
          onChanged();
        } else {
          scenariosBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder addScenarios(
          int index, io.grpc.benchmarks.proto.Control.Scenario.Builder builderForValue) {
        if (scenariosBuilder_ == null) {
          ensureScenariosIsMutable();
          scenarios_.add(index, builderForValue.build());
          onChanged();
        } else {
          scenariosBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder addAllScenarios(
          java.lang.Iterable<? extends io.grpc.benchmarks.proto.Control.Scenario> values) {
        if (scenariosBuilder_ == null) {
          ensureScenariosIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, scenarios_);
          onChanged();
        } else {
          scenariosBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder clearScenarios() {
        if (scenariosBuilder_ == null) {
          scenarios_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          scenariosBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public Builder removeScenarios(int index) {
        if (scenariosBuilder_ == null) {
          ensureScenariosIsMutable();
          scenarios_.remove(index);
          onChanged();
        } else {
          scenariosBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.Scenario.Builder getScenariosBuilder(
          int index) {
        return getScenariosFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ScenarioOrBuilder getScenariosOrBuilder(
          int index) {
        if (scenariosBuilder_ == null) {
          return scenarios_.get(index);  } else {
          return scenariosBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public java.util.List<? extends io.grpc.benchmarks.proto.Control.ScenarioOrBuilder> 
           getScenariosOrBuilderList() {
        if (scenariosBuilder_ != null) {
          return scenariosBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(scenarios_);
        }
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.Scenario.Builder addScenariosBuilder() {
        return getScenariosFieldBuilder().addBuilder(
            io.grpc.benchmarks.proto.Control.Scenario.getDefaultInstance());
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.Scenario.Builder addScenariosBuilder(
          int index) {
        return getScenariosFieldBuilder().addBuilder(
            index, io.grpc.benchmarks.proto.Control.Scenario.getDefaultInstance());
      }
      /**
       * <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Control.Scenario.Builder> 
           getScenariosBuilderList() {
        return getScenariosFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.Scenario, io.grpc.benchmarks.proto.Control.Scenario.Builder, io.grpc.benchmarks.proto.Control.ScenarioOrBuilder> 
          getScenariosFieldBuilder() {
        if (scenariosBuilder_ == null) {
          scenariosBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.Scenario, io.grpc.benchmarks.proto.Control.Scenario.Builder, io.grpc.benchmarks.proto.Control.ScenarioOrBuilder>(
                  scenarios_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          scenarios_ = null;
        }
        return scenariosBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.Scenarios)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.Scenarios)
    private static final io.grpc.benchmarks.proto.Control.Scenarios DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.Scenarios();
    }

    public static io.grpc.benchmarks.proto.Control.Scenarios getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.Scenarios getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScenarioResultSummaryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ScenarioResultSummary)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Total number of operations per second over all clients.
     * </pre>
     *
     * <code>double qps = 1;</code>
     */
    double getQps();

    /**
     * <pre>
     * QPS per one server core.
     * </pre>
     *
     * <code>double qps_per_server_core = 2;</code>
     */
    double getQpsPerServerCore();

    /**
     * <pre>
     * server load based on system_time (0.85 =&gt; 85%)
     * </pre>
     *
     * <code>double server_system_time = 3;</code>
     */
    double getServerSystemTime();

    /**
     * <pre>
     * server load based on user_time (0.85 =&gt; 85%)
     * </pre>
     *
     * <code>double server_user_time = 4;</code>
     */
    double getServerUserTime();

    /**
     * <pre>
     * client load based on system_time (0.85 =&gt; 85%)
     * </pre>
     *
     * <code>double client_system_time = 5;</code>
     */
    double getClientSystemTime();

    /**
     * <pre>
     * client load based on user_time (0.85 =&gt; 85%)
     * </pre>
     *
     * <code>double client_user_time = 6;</code>
     */
    double getClientUserTime();

    /**
     * <pre>
     * X% latency percentiles (in nanoseconds)
     * </pre>
     *
     * <code>double latency_50 = 7;</code>
     */
    double getLatency50();

    /**
     * <code>double latency_90 = 8;</code>
     */
    double getLatency90();

    /**
     * <code>double latency_95 = 9;</code>
     */
    double getLatency95();

    /**
     * <code>double latency_99 = 10;</code>
     */
    double getLatency99();

    /**
     * <code>double latency_999 = 11;</code>
     */
    double getLatency999();

    /**
     * <pre>
     * server cpu usage percentage
     * </pre>
     *
     * <code>double server_cpu_usage = 12;</code>
     */
    double getServerCpuUsage();

    /**
     * <pre>
     * Number of requests that succeeded/failed
     * </pre>
     *
     * <code>double successful_requests_per_second = 13;</code>
     */
    double getSuccessfulRequestsPerSecond();

    /**
     * <code>double failed_requests_per_second = 14;</code>
     */
    double getFailedRequestsPerSecond();

    /**
     * <pre>
     * Number of polls called inside completion queue per request
     * </pre>
     *
     * <code>double client_polls_per_request = 15;</code>
     */
    double getClientPollsPerRequest();

    /**
     * <code>double server_polls_per_request = 16;</code>
     */
    double getServerPollsPerRequest();
  }
  /**
   * <pre>
   * Basic summary that can be computed from ClientStats and ServerStats
   * once the scenario has finished.
   * </pre>
   *
   * Protobuf type {@code grpc.testing.ScenarioResultSummary}
   */
  public  static final class ScenarioResultSummary extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ScenarioResultSummary)
      ScenarioResultSummaryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ScenarioResultSummary.newBuilder() to construct.
    private ScenarioResultSummary(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ScenarioResultSummary() {
      qps_ = 0D;
      qpsPerServerCore_ = 0D;
      serverSystemTime_ = 0D;
      serverUserTime_ = 0D;
      clientSystemTime_ = 0D;
      clientUserTime_ = 0D;
      latency50_ = 0D;
      latency90_ = 0D;
      latency95_ = 0D;
      latency99_ = 0D;
      latency999_ = 0D;
      serverCpuUsage_ = 0D;
      successfulRequestsPerSecond_ = 0D;
      failedRequestsPerSecond_ = 0D;
      clientPollsPerRequest_ = 0D;
      serverPollsPerRequest_ = 0D;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ScenarioResultSummary(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 9: {

              qps_ = input.readDouble();
              break;
            }
            case 17: {

              qpsPerServerCore_ = input.readDouble();
              break;
            }
            case 25: {

              serverSystemTime_ = input.readDouble();
              break;
            }
            case 33: {

              serverUserTime_ = input.readDouble();
              break;
            }
            case 41: {

              clientSystemTime_ = input.readDouble();
              break;
            }
            case 49: {

              clientUserTime_ = input.readDouble();
              break;
            }
            case 57: {

              latency50_ = input.readDouble();
              break;
            }
            case 65: {

              latency90_ = input.readDouble();
              break;
            }
            case 73: {

              latency95_ = input.readDouble();
              break;
            }
            case 81: {

              latency99_ = input.readDouble();
              break;
            }
            case 89: {

              latency999_ = input.readDouble();
              break;
            }
            case 97: {

              serverCpuUsage_ = input.readDouble();
              break;
            }
            case 105: {

              successfulRequestsPerSecond_ = input.readDouble();
              break;
            }
            case 113: {

              failedRequestsPerSecond_ = input.readDouble();
              break;
            }
            case 121: {

              clientPollsPerRequest_ = input.readDouble();
              break;
            }
            case 129: {

              serverPollsPerRequest_ = input.readDouble();
              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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResultSummary_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResultSummary_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ScenarioResultSummary.class, io.grpc.benchmarks.proto.Control.ScenarioResultSummary.Builder.class);
    }

    public static final int QPS_FIELD_NUMBER = 1;
    private double qps_;
    /**
     * <pre>
     * Total number of operations per second over all clients.
     * </pre>
     *
     * <code>double qps = 1;</code>
     */
    public double getQps() {
      return qps_;
    }

    public static final int QPS_PER_SERVER_CORE_FIELD_NUMBER = 2;
    private double qpsPerServerCore_;
    /**
     * <pre>
     * QPS per one server core.
     * </pre>
     *
     * <code>double qps_per_server_core = 2;</code>
     */
    public double getQpsPerServerCore() {
      return qpsPerServerCore_;
    }

    public static final int SERVER_SYSTEM_TIME_FIELD_NUMBER = 3;
    private double serverSystemTime_;
    /**
     * <pre>
     * server load based on system_time (0.85 =&gt; 85%)
     * </pre>
     *
     * <code>double server_system_time = 3;</code>
     */
    public double getServerSystemTime() {
      return serverSystemTime_;
    }

    public static final int SERVER_USER_TIME_FIELD_NUMBER = 4;
    private double serverUserTime_;
    /**
     * <pre>
     * server load based on user_time (0.85 =&gt; 85%)
     * </pre>
     *
     * <code>double server_user_time = 4;</code>
     */
    public double getServerUserTime() {
      return serverUserTime_;
    }

    public static final int CLIENT_SYSTEM_TIME_FIELD_NUMBER = 5;
    private double clientSystemTime_;
    /**
     * <pre>
     * client load based on system_time (0.85 =&gt; 85%)
     * </pre>
     *
     * <code>double client_system_time = 5;</code>
     */
    public double getClientSystemTime() {
      return clientSystemTime_;
    }

    public static final int CLIENT_USER_TIME_FIELD_NUMBER = 6;
    private double clientUserTime_;
    /**
     * <pre>
     * client load based on user_time (0.85 =&gt; 85%)
     * </pre>
     *
     * <code>double client_user_time = 6;</code>
     */
    public double getClientUserTime() {
      return clientUserTime_;
    }

    public static final int LATENCY_50_FIELD_NUMBER = 7;
    private double latency50_;
    /**
     * <pre>
     * X% latency percentiles (in nanoseconds)
     * </pre>
     *
     * <code>double latency_50 = 7;</code>
     */
    public double getLatency50() {
      return latency50_;
    }

    public static final int LATENCY_90_FIELD_NUMBER = 8;
    private double latency90_;
    /**
     * <code>double latency_90 = 8;</code>
     */
    public double getLatency90() {
      return latency90_;
    }

    public static final int LATENCY_95_FIELD_NUMBER = 9;
    private double latency95_;
    /**
     * <code>double latency_95 = 9;</code>
     */
    public double getLatency95() {
      return latency95_;
    }

    public static final int LATENCY_99_FIELD_NUMBER = 10;
    private double latency99_;
    /**
     * <code>double latency_99 = 10;</code>
     */
    public double getLatency99() {
      return latency99_;
    }

    public static final int LATENCY_999_FIELD_NUMBER = 11;
    private double latency999_;
    /**
     * <code>double latency_999 = 11;</code>
     */
    public double getLatency999() {
      return latency999_;
    }

    public static final int SERVER_CPU_USAGE_FIELD_NUMBER = 12;
    private double serverCpuUsage_;
    /**
     * <pre>
     * server cpu usage percentage
     * </pre>
     *
     * <code>double server_cpu_usage = 12;</code>
     */
    public double getServerCpuUsage() {
      return serverCpuUsage_;
    }

    public static final int SUCCESSFUL_REQUESTS_PER_SECOND_FIELD_NUMBER = 13;
    private double successfulRequestsPerSecond_;
    /**
     * <pre>
     * Number of requests that succeeded/failed
     * </pre>
     *
     * <code>double successful_requests_per_second = 13;</code>
     */
    public double getSuccessfulRequestsPerSecond() {
      return successfulRequestsPerSecond_;
    }

    public static final int FAILED_REQUESTS_PER_SECOND_FIELD_NUMBER = 14;
    private double failedRequestsPerSecond_;
    /**
     * <code>double failed_requests_per_second = 14;</code>
     */
    public double getFailedRequestsPerSecond() {
      return failedRequestsPerSecond_;
    }

    public static final int CLIENT_POLLS_PER_REQUEST_FIELD_NUMBER = 15;
    private double clientPollsPerRequest_;
    /**
     * <pre>
     * Number of polls called inside completion queue per request
     * </pre>
     *
     * <code>double client_polls_per_request = 15;</code>
     */
    public double getClientPollsPerRequest() {
      return clientPollsPerRequest_;
    }

    public static final int SERVER_POLLS_PER_REQUEST_FIELD_NUMBER = 16;
    private double serverPollsPerRequest_;
    /**
     * <code>double server_polls_per_request = 16;</code>
     */
    public double getServerPollsPerRequest() {
      return serverPollsPerRequest_;
    }

    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 {
      if (qps_ != 0D) {
        output.writeDouble(1, qps_);
      }
      if (qpsPerServerCore_ != 0D) {
        output.writeDouble(2, qpsPerServerCore_);
      }
      if (serverSystemTime_ != 0D) {
        output.writeDouble(3, serverSystemTime_);
      }
      if (serverUserTime_ != 0D) {
        output.writeDouble(4, serverUserTime_);
      }
      if (clientSystemTime_ != 0D) {
        output.writeDouble(5, clientSystemTime_);
      }
      if (clientUserTime_ != 0D) {
        output.writeDouble(6, clientUserTime_);
      }
      if (latency50_ != 0D) {
        output.writeDouble(7, latency50_);
      }
      if (latency90_ != 0D) {
        output.writeDouble(8, latency90_);
      }
      if (latency95_ != 0D) {
        output.writeDouble(9, latency95_);
      }
      if (latency99_ != 0D) {
        output.writeDouble(10, latency99_);
      }
      if (latency999_ != 0D) {
        output.writeDouble(11, latency999_);
      }
      if (serverCpuUsage_ != 0D) {
        output.writeDouble(12, serverCpuUsage_);
      }
      if (successfulRequestsPerSecond_ != 0D) {
        output.writeDouble(13, successfulRequestsPerSecond_);
      }
      if (failedRequestsPerSecond_ != 0D) {
        output.writeDouble(14, failedRequestsPerSecond_);
      }
      if (clientPollsPerRequest_ != 0D) {
        output.writeDouble(15, clientPollsPerRequest_);
      }
      if (serverPollsPerRequest_ != 0D) {
        output.writeDouble(16, serverPollsPerRequest_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (qps_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, qps_);
      }
      if (qpsPerServerCore_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, qpsPerServerCore_);
      }
      if (serverSystemTime_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, serverSystemTime_);
      }
      if (serverUserTime_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, serverUserTime_);
      }
      if (clientSystemTime_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(5, clientSystemTime_);
      }
      if (clientUserTime_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(6, clientUserTime_);
      }
      if (latency50_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(7, latency50_);
      }
      if (latency90_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(8, latency90_);
      }
      if (latency95_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(9, latency95_);
      }
      if (latency99_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(10, latency99_);
      }
      if (latency999_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(11, latency999_);
      }
      if (serverCpuUsage_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(12, serverCpuUsage_);
      }
      if (successfulRequestsPerSecond_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(13, successfulRequestsPerSecond_);
      }
      if (failedRequestsPerSecond_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(14, failedRequestsPerSecond_);
      }
      if (clientPollsPerRequest_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(15, clientPollsPerRequest_);
      }
      if (serverPollsPerRequest_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(16, serverPollsPerRequest_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ScenarioResultSummary)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ScenarioResultSummary other = (io.grpc.benchmarks.proto.Control.ScenarioResultSummary) obj;

      boolean result = true;
      result = result && (
          java.lang.Double.doubleToLongBits(getQps())
          == java.lang.Double.doubleToLongBits(
              other.getQps()));
      result = result && (
          java.lang.Double.doubleToLongBits(getQpsPerServerCore())
          == java.lang.Double.doubleToLongBits(
              other.getQpsPerServerCore()));
      result = result && (
          java.lang.Double.doubleToLongBits(getServerSystemTime())
          == java.lang.Double.doubleToLongBits(
              other.getServerSystemTime()));
      result = result && (
          java.lang.Double.doubleToLongBits(getServerUserTime())
          == java.lang.Double.doubleToLongBits(
              other.getServerUserTime()));
      result = result && (
          java.lang.Double.doubleToLongBits(getClientSystemTime())
          == java.lang.Double.doubleToLongBits(
              other.getClientSystemTime()));
      result = result && (
          java.lang.Double.doubleToLongBits(getClientUserTime())
          == java.lang.Double.doubleToLongBits(
              other.getClientUserTime()));
      result = result && (
          java.lang.Double.doubleToLongBits(getLatency50())
          == java.lang.Double.doubleToLongBits(
              other.getLatency50()));
      result = result && (
          java.lang.Double.doubleToLongBits(getLatency90())
          == java.lang.Double.doubleToLongBits(
              other.getLatency90()));
      result = result && (
          java.lang.Double.doubleToLongBits(getLatency95())
          == java.lang.Double.doubleToLongBits(
              other.getLatency95()));
      result = result && (
          java.lang.Double.doubleToLongBits(getLatency99())
          == java.lang.Double.doubleToLongBits(
              other.getLatency99()));
      result = result && (
          java.lang.Double.doubleToLongBits(getLatency999())
          == java.lang.Double.doubleToLongBits(
              other.getLatency999()));
      result = result && (
          java.lang.Double.doubleToLongBits(getServerCpuUsage())
          == java.lang.Double.doubleToLongBits(
              other.getServerCpuUsage()));
      result = result && (
          java.lang.Double.doubleToLongBits(getSuccessfulRequestsPerSecond())
          == java.lang.Double.doubleToLongBits(
              other.getSuccessfulRequestsPerSecond()));
      result = result && (
          java.lang.Double.doubleToLongBits(getFailedRequestsPerSecond())
          == java.lang.Double.doubleToLongBits(
              other.getFailedRequestsPerSecond()));
      result = result && (
          java.lang.Double.doubleToLongBits(getClientPollsPerRequest())
          == java.lang.Double.doubleToLongBits(
              other.getClientPollsPerRequest()));
      result = result && (
          java.lang.Double.doubleToLongBits(getServerPollsPerRequest())
          == java.lang.Double.doubleToLongBits(
              other.getServerPollsPerRequest()));
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + QPS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getQps()));
      hash = (37 * hash) + QPS_PER_SERVER_CORE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getQpsPerServerCore()));
      hash = (37 * hash) + SERVER_SYSTEM_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getServerSystemTime()));
      hash = (37 * hash) + SERVER_USER_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getServerUserTime()));
      hash = (37 * hash) + CLIENT_SYSTEM_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getClientSystemTime()));
      hash = (37 * hash) + CLIENT_USER_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getClientUserTime()));
      hash = (37 * hash) + LATENCY_50_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getLatency50()));
      hash = (37 * hash) + LATENCY_90_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getLatency90()));
      hash = (37 * hash) + LATENCY_95_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getLatency95()));
      hash = (37 * hash) + LATENCY_99_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getLatency99()));
      hash = (37 * hash) + LATENCY_999_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getLatency999()));
      hash = (37 * hash) + SERVER_CPU_USAGE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getServerCpuUsage()));
      hash = (37 * hash) + SUCCESSFUL_REQUESTS_PER_SECOND_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getSuccessfulRequestsPerSecond()));
      hash = (37 * hash) + FAILED_REQUESTS_PER_SECOND_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getFailedRequestsPerSecond()));
      hash = (37 * hash) + CLIENT_POLLS_PER_REQUEST_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getClientPollsPerRequest()));
      hash = (37 * hash) + SERVER_POLLS_PER_REQUEST_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getServerPollsPerRequest()));
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary 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 io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary 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 io.grpc.benchmarks.proto.Control.ScenarioResultSummary parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary 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(io.grpc.benchmarks.proto.Control.ScenarioResultSummary 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;
    }
    /**
     * <pre>
     * Basic summary that can be computed from ClientStats and ServerStats
     * once the scenario has finished.
     * </pre>
     *
     * Protobuf type {@code grpc.testing.ScenarioResultSummary}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ScenarioResultSummary)
        io.grpc.benchmarks.proto.Control.ScenarioResultSummaryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResultSummary_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResultSummary_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ScenarioResultSummary.class, io.grpc.benchmarks.proto.Control.ScenarioResultSummary.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ScenarioResultSummary.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        qps_ = 0D;

        qpsPerServerCore_ = 0D;

        serverSystemTime_ = 0D;

        serverUserTime_ = 0D;

        clientSystemTime_ = 0D;

        clientUserTime_ = 0D;

        latency50_ = 0D;

        latency90_ = 0D;

        latency95_ = 0D;

        latency99_ = 0D;

        latency999_ = 0D;

        serverCpuUsage_ = 0D;

        successfulRequestsPerSecond_ = 0D;

        failedRequestsPerSecond_ = 0D;

        clientPollsPerRequest_ = 0D;

        serverPollsPerRequest_ = 0D;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResultSummary_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ScenarioResultSummary getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ScenarioResultSummary.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ScenarioResultSummary build() {
        io.grpc.benchmarks.proto.Control.ScenarioResultSummary result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ScenarioResultSummary buildPartial() {
        io.grpc.benchmarks.proto.Control.ScenarioResultSummary result = new io.grpc.benchmarks.proto.Control.ScenarioResultSummary(this);
        result.qps_ = qps_;
        result.qpsPerServerCore_ = qpsPerServerCore_;
        result.serverSystemTime_ = serverSystemTime_;
        result.serverUserTime_ = serverUserTime_;
        result.clientSystemTime_ = clientSystemTime_;
        result.clientUserTime_ = clientUserTime_;
        result.latency50_ = latency50_;
        result.latency90_ = latency90_;
        result.latency95_ = latency95_;
        result.latency99_ = latency99_;
        result.latency999_ = latency999_;
        result.serverCpuUsage_ = serverCpuUsage_;
        result.successfulRequestsPerSecond_ = successfulRequestsPerSecond_;
        result.failedRequestsPerSecond_ = failedRequestsPerSecond_;
        result.clientPollsPerRequest_ = clientPollsPerRequest_;
        result.serverPollsPerRequest_ = serverPollsPerRequest_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ScenarioResultSummary) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ScenarioResultSummary)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ScenarioResultSummary other) {
        if (other == io.grpc.benchmarks.proto.Control.ScenarioResultSummary.getDefaultInstance()) return this;
        if (other.getQps() != 0D) {
          setQps(other.getQps());
        }
        if (other.getQpsPerServerCore() != 0D) {
          setQpsPerServerCore(other.getQpsPerServerCore());
        }
        if (other.getServerSystemTime() != 0D) {
          setServerSystemTime(other.getServerSystemTime());
        }
        if (other.getServerUserTime() != 0D) {
          setServerUserTime(other.getServerUserTime());
        }
        if (other.getClientSystemTime() != 0D) {
          setClientSystemTime(other.getClientSystemTime());
        }
        if (other.getClientUserTime() != 0D) {
          setClientUserTime(other.getClientUserTime());
        }
        if (other.getLatency50() != 0D) {
          setLatency50(other.getLatency50());
        }
        if (other.getLatency90() != 0D) {
          setLatency90(other.getLatency90());
        }
        if (other.getLatency95() != 0D) {
          setLatency95(other.getLatency95());
        }
        if (other.getLatency99() != 0D) {
          setLatency99(other.getLatency99());
        }
        if (other.getLatency999() != 0D) {
          setLatency999(other.getLatency999());
        }
        if (other.getServerCpuUsage() != 0D) {
          setServerCpuUsage(other.getServerCpuUsage());
        }
        if (other.getSuccessfulRequestsPerSecond() != 0D) {
          setSuccessfulRequestsPerSecond(other.getSuccessfulRequestsPerSecond());
        }
        if (other.getFailedRequestsPerSecond() != 0D) {
          setFailedRequestsPerSecond(other.getFailedRequestsPerSecond());
        }
        if (other.getClientPollsPerRequest() != 0D) {
          setClientPollsPerRequest(other.getClientPollsPerRequest());
        }
        if (other.getServerPollsPerRequest() != 0D) {
          setServerPollsPerRequest(other.getServerPollsPerRequest());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ScenarioResultSummary parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ScenarioResultSummary) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private double qps_ ;
      /**
       * <pre>
       * Total number of operations per second over all clients.
       * </pre>
       *
       * <code>double qps = 1;</code>
       */
      public double getQps() {
        return qps_;
      }
      /**
       * <pre>
       * Total number of operations per second over all clients.
       * </pre>
       *
       * <code>double qps = 1;</code>
       */
      public Builder setQps(double value) {
        
        qps_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total number of operations per second over all clients.
       * </pre>
       *
       * <code>double qps = 1;</code>
       */
      public Builder clearQps() {
        
        qps_ = 0D;
        onChanged();
        return this;
      }

      private double qpsPerServerCore_ ;
      /**
       * <pre>
       * QPS per one server core.
       * </pre>
       *
       * <code>double qps_per_server_core = 2;</code>
       */
      public double getQpsPerServerCore() {
        return qpsPerServerCore_;
      }
      /**
       * <pre>
       * QPS per one server core.
       * </pre>
       *
       * <code>double qps_per_server_core = 2;</code>
       */
      public Builder setQpsPerServerCore(double value) {
        
        qpsPerServerCore_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * QPS per one server core.
       * </pre>
       *
       * <code>double qps_per_server_core = 2;</code>
       */
      public Builder clearQpsPerServerCore() {
        
        qpsPerServerCore_ = 0D;
        onChanged();
        return this;
      }

      private double serverSystemTime_ ;
      /**
       * <pre>
       * server load based on system_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double server_system_time = 3;</code>
       */
      public double getServerSystemTime() {
        return serverSystemTime_;
      }
      /**
       * <pre>
       * server load based on system_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double server_system_time = 3;</code>
       */
      public Builder setServerSystemTime(double value) {
        
        serverSystemTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * server load based on system_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double server_system_time = 3;</code>
       */
      public Builder clearServerSystemTime() {
        
        serverSystemTime_ = 0D;
        onChanged();
        return this;
      }

      private double serverUserTime_ ;
      /**
       * <pre>
       * server load based on user_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double server_user_time = 4;</code>
       */
      public double getServerUserTime() {
        return serverUserTime_;
      }
      /**
       * <pre>
       * server load based on user_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double server_user_time = 4;</code>
       */
      public Builder setServerUserTime(double value) {
        
        serverUserTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * server load based on user_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double server_user_time = 4;</code>
       */
      public Builder clearServerUserTime() {
        
        serverUserTime_ = 0D;
        onChanged();
        return this;
      }

      private double clientSystemTime_ ;
      /**
       * <pre>
       * client load based on system_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double client_system_time = 5;</code>
       */
      public double getClientSystemTime() {
        return clientSystemTime_;
      }
      /**
       * <pre>
       * client load based on system_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double client_system_time = 5;</code>
       */
      public Builder setClientSystemTime(double value) {
        
        clientSystemTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * client load based on system_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double client_system_time = 5;</code>
       */
      public Builder clearClientSystemTime() {
        
        clientSystemTime_ = 0D;
        onChanged();
        return this;
      }

      private double clientUserTime_ ;
      /**
       * <pre>
       * client load based on user_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double client_user_time = 6;</code>
       */
      public double getClientUserTime() {
        return clientUserTime_;
      }
      /**
       * <pre>
       * client load based on user_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double client_user_time = 6;</code>
       */
      public Builder setClientUserTime(double value) {
        
        clientUserTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * client load based on user_time (0.85 =&gt; 85%)
       * </pre>
       *
       * <code>double client_user_time = 6;</code>
       */
      public Builder clearClientUserTime() {
        
        clientUserTime_ = 0D;
        onChanged();
        return this;
      }

      private double latency50_ ;
      /**
       * <pre>
       * X% latency percentiles (in nanoseconds)
       * </pre>
       *
       * <code>double latency_50 = 7;</code>
       */
      public double getLatency50() {
        return latency50_;
      }
      /**
       * <pre>
       * X% latency percentiles (in nanoseconds)
       * </pre>
       *
       * <code>double latency_50 = 7;</code>
       */
      public Builder setLatency50(double value) {
        
        latency50_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * X% latency percentiles (in nanoseconds)
       * </pre>
       *
       * <code>double latency_50 = 7;</code>
       */
      public Builder clearLatency50() {
        
        latency50_ = 0D;
        onChanged();
        return this;
      }

      private double latency90_ ;
      /**
       * <code>double latency_90 = 8;</code>
       */
      public double getLatency90() {
        return latency90_;
      }
      /**
       * <code>double latency_90 = 8;</code>
       */
      public Builder setLatency90(double value) {
        
        latency90_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double latency_90 = 8;</code>
       */
      public Builder clearLatency90() {
        
        latency90_ = 0D;
        onChanged();
        return this;
      }

      private double latency95_ ;
      /**
       * <code>double latency_95 = 9;</code>
       */
      public double getLatency95() {
        return latency95_;
      }
      /**
       * <code>double latency_95 = 9;</code>
       */
      public Builder setLatency95(double value) {
        
        latency95_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double latency_95 = 9;</code>
       */
      public Builder clearLatency95() {
        
        latency95_ = 0D;
        onChanged();
        return this;
      }

      private double latency99_ ;
      /**
       * <code>double latency_99 = 10;</code>
       */
      public double getLatency99() {
        return latency99_;
      }
      /**
       * <code>double latency_99 = 10;</code>
       */
      public Builder setLatency99(double value) {
        
        latency99_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double latency_99 = 10;</code>
       */
      public Builder clearLatency99() {
        
        latency99_ = 0D;
        onChanged();
        return this;
      }

      private double latency999_ ;
      /**
       * <code>double latency_999 = 11;</code>
       */
      public double getLatency999() {
        return latency999_;
      }
      /**
       * <code>double latency_999 = 11;</code>
       */
      public Builder setLatency999(double value) {
        
        latency999_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double latency_999 = 11;</code>
       */
      public Builder clearLatency999() {
        
        latency999_ = 0D;
        onChanged();
        return this;
      }

      private double serverCpuUsage_ ;
      /**
       * <pre>
       * server cpu usage percentage
       * </pre>
       *
       * <code>double server_cpu_usage = 12;</code>
       */
      public double getServerCpuUsage() {
        return serverCpuUsage_;
      }
      /**
       * <pre>
       * server cpu usage percentage
       * </pre>
       *
       * <code>double server_cpu_usage = 12;</code>
       */
      public Builder setServerCpuUsage(double value) {
        
        serverCpuUsage_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * server cpu usage percentage
       * </pre>
       *
       * <code>double server_cpu_usage = 12;</code>
       */
      public Builder clearServerCpuUsage() {
        
        serverCpuUsage_ = 0D;
        onChanged();
        return this;
      }

      private double successfulRequestsPerSecond_ ;
      /**
       * <pre>
       * Number of requests that succeeded/failed
       * </pre>
       *
       * <code>double successful_requests_per_second = 13;</code>
       */
      public double getSuccessfulRequestsPerSecond() {
        return successfulRequestsPerSecond_;
      }
      /**
       * <pre>
       * Number of requests that succeeded/failed
       * </pre>
       *
       * <code>double successful_requests_per_second = 13;</code>
       */
      public Builder setSuccessfulRequestsPerSecond(double value) {
        
        successfulRequestsPerSecond_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of requests that succeeded/failed
       * </pre>
       *
       * <code>double successful_requests_per_second = 13;</code>
       */
      public Builder clearSuccessfulRequestsPerSecond() {
        
        successfulRequestsPerSecond_ = 0D;
        onChanged();
        return this;
      }

      private double failedRequestsPerSecond_ ;
      /**
       * <code>double failed_requests_per_second = 14;</code>
       */
      public double getFailedRequestsPerSecond() {
        return failedRequestsPerSecond_;
      }
      /**
       * <code>double failed_requests_per_second = 14;</code>
       */
      public Builder setFailedRequestsPerSecond(double value) {
        
        failedRequestsPerSecond_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double failed_requests_per_second = 14;</code>
       */
      public Builder clearFailedRequestsPerSecond() {
        
        failedRequestsPerSecond_ = 0D;
        onChanged();
        return this;
      }

      private double clientPollsPerRequest_ ;
      /**
       * <pre>
       * Number of polls called inside completion queue per request
       * </pre>
       *
       * <code>double client_polls_per_request = 15;</code>
       */
      public double getClientPollsPerRequest() {
        return clientPollsPerRequest_;
      }
      /**
       * <pre>
       * Number of polls called inside completion queue per request
       * </pre>
       *
       * <code>double client_polls_per_request = 15;</code>
       */
      public Builder setClientPollsPerRequest(double value) {
        
        clientPollsPerRequest_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of polls called inside completion queue per request
       * </pre>
       *
       * <code>double client_polls_per_request = 15;</code>
       */
      public Builder clearClientPollsPerRequest() {
        
        clientPollsPerRequest_ = 0D;
        onChanged();
        return this;
      }

      private double serverPollsPerRequest_ ;
      /**
       * <code>double server_polls_per_request = 16;</code>
       */
      public double getServerPollsPerRequest() {
        return serverPollsPerRequest_;
      }
      /**
       * <code>double server_polls_per_request = 16;</code>
       */
      public Builder setServerPollsPerRequest(double value) {
        
        serverPollsPerRequest_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double server_polls_per_request = 16;</code>
       */
      public Builder clearServerPollsPerRequest() {
        
        serverPollsPerRequest_ = 0D;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ScenarioResultSummary)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ScenarioResultSummary)
    private static final io.grpc.benchmarks.proto.Control.ScenarioResultSummary DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ScenarioResultSummary();
    }

    public static io.grpc.benchmarks.proto.Control.ScenarioResultSummary getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ScenarioResultSummary getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScenarioResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.testing.ScenarioResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Inputs used to run the scenario.
     * </pre>
     *
     * <code>.grpc.testing.Scenario scenario = 1;</code>
     */
    boolean hasScenario();
    /**
     * <pre>
     * Inputs used to run the scenario.
     * </pre>
     *
     * <code>.grpc.testing.Scenario scenario = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.Scenario getScenario();
    /**
     * <pre>
     * Inputs used to run the scenario.
     * </pre>
     *
     * <code>.grpc.testing.Scenario scenario = 1;</code>
     */
    io.grpc.benchmarks.proto.Control.ScenarioOrBuilder getScenarioOrBuilder();

    /**
     * <pre>
     * Histograms from all clients merged into one histogram.
     * </pre>
     *
     * <code>.grpc.testing.HistogramData latencies = 2;</code>
     */
    boolean hasLatencies();
    /**
     * <pre>
     * Histograms from all clients merged into one histogram.
     * </pre>
     *
     * <code>.grpc.testing.HistogramData latencies = 2;</code>
     */
    io.grpc.benchmarks.proto.Stats.HistogramData getLatencies();
    /**
     * <pre>
     * Histograms from all clients merged into one histogram.
     * </pre>
     *
     * <code>.grpc.testing.HistogramData latencies = 2;</code>
     */
    io.grpc.benchmarks.proto.Stats.HistogramDataOrBuilder getLatenciesOrBuilder();

    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    java.util.List<io.grpc.benchmarks.proto.Stats.ClientStats> 
        getClientStatsList();
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    io.grpc.benchmarks.proto.Stats.ClientStats getClientStats(int index);
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    int getClientStatsCount();
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    java.util.List<? extends io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder> 
        getClientStatsOrBuilderList();
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder getClientStatsOrBuilder(
        int index);

    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    java.util.List<io.grpc.benchmarks.proto.Stats.ServerStats> 
        getServerStatsList();
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    io.grpc.benchmarks.proto.Stats.ServerStats getServerStats(int index);
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    int getServerStatsCount();
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    java.util.List<? extends io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder> 
        getServerStatsOrBuilderList();
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder getServerStatsOrBuilder(
        int index);

    /**
     * <pre>
     * Number of cores available to each server
     * </pre>
     *
     * <code>repeated int32 server_cores = 5;</code>
     */
    java.util.List<java.lang.Integer> getServerCoresList();
    /**
     * <pre>
     * Number of cores available to each server
     * </pre>
     *
     * <code>repeated int32 server_cores = 5;</code>
     */
    int getServerCoresCount();
    /**
     * <pre>
     * Number of cores available to each server
     * </pre>
     *
     * <code>repeated int32 server_cores = 5;</code>
     */
    int getServerCores(int index);

    /**
     * <pre>
     * An after-the-fact computed summary
     * </pre>
     *
     * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
     */
    boolean hasSummary();
    /**
     * <pre>
     * An after-the-fact computed summary
     * </pre>
     *
     * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
     */
    io.grpc.benchmarks.proto.Control.ScenarioResultSummary getSummary();
    /**
     * <pre>
     * An after-the-fact computed summary
     * </pre>
     *
     * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
     */
    io.grpc.benchmarks.proto.Control.ScenarioResultSummaryOrBuilder getSummaryOrBuilder();

    /**
     * <pre>
     * Information on success or failure of each worker
     * </pre>
     *
     * <code>repeated bool client_success = 7;</code>
     */
    java.util.List<java.lang.Boolean> getClientSuccessList();
    /**
     * <pre>
     * Information on success or failure of each worker
     * </pre>
     *
     * <code>repeated bool client_success = 7;</code>
     */
    int getClientSuccessCount();
    /**
     * <pre>
     * Information on success or failure of each worker
     * </pre>
     *
     * <code>repeated bool client_success = 7;</code>
     */
    boolean getClientSuccess(int index);

    /**
     * <code>repeated bool server_success = 8;</code>
     */
    java.util.List<java.lang.Boolean> getServerSuccessList();
    /**
     * <code>repeated bool server_success = 8;</code>
     */
    int getServerSuccessCount();
    /**
     * <code>repeated bool server_success = 8;</code>
     */
    boolean getServerSuccess(int index);

    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    java.util.List<io.grpc.benchmarks.proto.Stats.RequestResultCount> 
        getRequestResultsList();
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    io.grpc.benchmarks.proto.Stats.RequestResultCount getRequestResults(int index);
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    int getRequestResultsCount();
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    java.util.List<? extends io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder> 
        getRequestResultsOrBuilderList();
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder getRequestResultsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Results of a single benchmark scenario.
   * </pre>
   *
   * Protobuf type {@code grpc.testing.ScenarioResult}
   */
  public  static final class ScenarioResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.testing.ScenarioResult)
      ScenarioResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ScenarioResult.newBuilder() to construct.
    private ScenarioResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ScenarioResult() {
      clientStats_ = java.util.Collections.emptyList();
      serverStats_ = java.util.Collections.emptyList();
      serverCores_ = java.util.Collections.emptyList();
      clientSuccess_ = java.util.Collections.emptyList();
      serverSuccess_ = java.util.Collections.emptyList();
      requestResults_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ScenarioResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.grpc.benchmarks.proto.Control.Scenario.Builder subBuilder = null;
              if (scenario_ != null) {
                subBuilder = scenario_.toBuilder();
              }
              scenario_ = input.readMessage(io.grpc.benchmarks.proto.Control.Scenario.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(scenario_);
                scenario_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              io.grpc.benchmarks.proto.Stats.HistogramData.Builder subBuilder = null;
              if (latencies_ != null) {
                subBuilder = latencies_.toBuilder();
              }
              latencies_ = input.readMessage(io.grpc.benchmarks.proto.Stats.HistogramData.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(latencies_);
                latencies_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                clientStats_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Stats.ClientStats>();
                mutable_bitField0_ |= 0x00000004;
              }
              clientStats_.add(
                  input.readMessage(io.grpc.benchmarks.proto.Stats.ClientStats.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                serverStats_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Stats.ServerStats>();
                mutable_bitField0_ |= 0x00000008;
              }
              serverStats_.add(
                  input.readMessage(io.grpc.benchmarks.proto.Stats.ServerStats.parser(), extensionRegistry));
              break;
            }
            case 40: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                serverCores_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000010;
              }
              serverCores_.add(input.readInt32());
              break;
            }
            case 42: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                serverCores_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000010;
              }
              while (input.getBytesUntilLimit() > 0) {
                serverCores_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 50: {
              io.grpc.benchmarks.proto.Control.ScenarioResultSummary.Builder subBuilder = null;
              if (summary_ != null) {
                subBuilder = summary_.toBuilder();
              }
              summary_ = input.readMessage(io.grpc.benchmarks.proto.Control.ScenarioResultSummary.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(summary_);
                summary_ = subBuilder.buildPartial();
              }

              break;
            }
            case 56: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                clientSuccess_ = new java.util.ArrayList<java.lang.Boolean>();
                mutable_bitField0_ |= 0x00000040;
              }
              clientSuccess_.add(input.readBool());
              break;
            }
            case 58: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                clientSuccess_ = new java.util.ArrayList<java.lang.Boolean>();
                mutable_bitField0_ |= 0x00000040;
              }
              while (input.getBytesUntilLimit() > 0) {
                clientSuccess_.add(input.readBool());
              }
              input.popLimit(limit);
              break;
            }
            case 64: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                serverSuccess_ = new java.util.ArrayList<java.lang.Boolean>();
                mutable_bitField0_ |= 0x00000080;
              }
              serverSuccess_.add(input.readBool());
              break;
            }
            case 66: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                serverSuccess_ = new java.util.ArrayList<java.lang.Boolean>();
                mutable_bitField0_ |= 0x00000080;
              }
              while (input.getBytesUntilLimit() > 0) {
                serverSuccess_.add(input.readBool());
              }
              input.popLimit(limit);
              break;
            }
            case 74: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                requestResults_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Stats.RequestResultCount>();
                mutable_bitField0_ |= 0x00000100;
              }
              requestResults_.add(
                  input.readMessage(io.grpc.benchmarks.proto.Stats.RequestResultCount.parser(), extensionRegistry));
              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_ & 0x00000004) == 0x00000004)) {
          clientStats_ = java.util.Collections.unmodifiableList(clientStats_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          serverStats_ = java.util.Collections.unmodifiableList(serverStats_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          serverCores_ = java.util.Collections.unmodifiableList(serverCores_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          clientSuccess_ = java.util.Collections.unmodifiableList(clientSuccess_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          serverSuccess_ = java.util.Collections.unmodifiableList(serverSuccess_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          requestResults_ = java.util.Collections.unmodifiableList(requestResults_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.benchmarks.proto.Control.ScenarioResult.class, io.grpc.benchmarks.proto.Control.ScenarioResult.Builder.class);
    }

    private int bitField0_;
    public static final int SCENARIO_FIELD_NUMBER = 1;
    private io.grpc.benchmarks.proto.Control.Scenario scenario_;
    /**
     * <pre>
     * Inputs used to run the scenario.
     * </pre>
     *
     * <code>.grpc.testing.Scenario scenario = 1;</code>
     */
    public boolean hasScenario() {
      return scenario_ != null;
    }
    /**
     * <pre>
     * Inputs used to run the scenario.
     * </pre>
     *
     * <code>.grpc.testing.Scenario scenario = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.Scenario getScenario() {
      return scenario_ == null ? io.grpc.benchmarks.proto.Control.Scenario.getDefaultInstance() : scenario_;
    }
    /**
     * <pre>
     * Inputs used to run the scenario.
     * </pre>
     *
     * <code>.grpc.testing.Scenario scenario = 1;</code>
     */
    public io.grpc.benchmarks.proto.Control.ScenarioOrBuilder getScenarioOrBuilder() {
      return getScenario();
    }

    public static final int LATENCIES_FIELD_NUMBER = 2;
    private io.grpc.benchmarks.proto.Stats.HistogramData latencies_;
    /**
     * <pre>
     * Histograms from all clients merged into one histogram.
     * </pre>
     *
     * <code>.grpc.testing.HistogramData latencies = 2;</code>
     */
    public boolean hasLatencies() {
      return latencies_ != null;
    }
    /**
     * <pre>
     * Histograms from all clients merged into one histogram.
     * </pre>
     *
     * <code>.grpc.testing.HistogramData latencies = 2;</code>
     */
    public io.grpc.benchmarks.proto.Stats.HistogramData getLatencies() {
      return latencies_ == null ? io.grpc.benchmarks.proto.Stats.HistogramData.getDefaultInstance() : latencies_;
    }
    /**
     * <pre>
     * Histograms from all clients merged into one histogram.
     * </pre>
     *
     * <code>.grpc.testing.HistogramData latencies = 2;</code>
     */
    public io.grpc.benchmarks.proto.Stats.HistogramDataOrBuilder getLatenciesOrBuilder() {
      return getLatencies();
    }

    public static final int CLIENT_STATS_FIELD_NUMBER = 3;
    private java.util.List<io.grpc.benchmarks.proto.Stats.ClientStats> clientStats_;
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    public java.util.List<io.grpc.benchmarks.proto.Stats.ClientStats> getClientStatsList() {
      return clientStats_;
    }
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    public java.util.List<? extends io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder> 
        getClientStatsOrBuilderList() {
      return clientStats_;
    }
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    public int getClientStatsCount() {
      return clientStats_.size();
    }
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    public io.grpc.benchmarks.proto.Stats.ClientStats getClientStats(int index) {
      return clientStats_.get(index);
    }
    /**
     * <pre>
     * Client stats for each client
     * </pre>
     *
     * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
     */
    public io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder getClientStatsOrBuilder(
        int index) {
      return clientStats_.get(index);
    }

    public static final int SERVER_STATS_FIELD_NUMBER = 4;
    private java.util.List<io.grpc.benchmarks.proto.Stats.ServerStats> serverStats_;
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    public java.util.List<io.grpc.benchmarks.proto.Stats.ServerStats> getServerStatsList() {
      return serverStats_;
    }
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    public java.util.List<? extends io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder> 
        getServerStatsOrBuilderList() {
      return serverStats_;
    }
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    public int getServerStatsCount() {
      return serverStats_.size();
    }
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    public io.grpc.benchmarks.proto.Stats.ServerStats getServerStats(int index) {
      return serverStats_.get(index);
    }
    /**
     * <pre>
     * Server stats for each server
     * </pre>
     *
     * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
     */
    public io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder getServerStatsOrBuilder(
        int index) {
      return serverStats_.get(index);
    }

    public static final int SERVER_CORES_FIELD_NUMBER = 5;
    private java.util.List<java.lang.Integer> serverCores_;
    /**
     * <pre>
     * Number of cores available to each server
     * </pre>
     *
     * <code>repeated int32 server_cores = 5;</code>
     */
    public java.util.List<java.lang.Integer>
        getServerCoresList() {
      return serverCores_;
    }
    /**
     * <pre>
     * Number of cores available to each server
     * </pre>
     *
     * <code>repeated int32 server_cores = 5;</code>
     */
    public int getServerCoresCount() {
      return serverCores_.size();
    }
    /**
     * <pre>
     * Number of cores available to each server
     * </pre>
     *
     * <code>repeated int32 server_cores = 5;</code>
     */
    public int getServerCores(int index) {
      return serverCores_.get(index);
    }
    private int serverCoresMemoizedSerializedSize = -1;

    public static final int SUMMARY_FIELD_NUMBER = 6;
    private io.grpc.benchmarks.proto.Control.ScenarioResultSummary summary_;
    /**
     * <pre>
     * An after-the-fact computed summary
     * </pre>
     *
     * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
     */
    public boolean hasSummary() {
      return summary_ != null;
    }
    /**
     * <pre>
     * An after-the-fact computed summary
     * </pre>
     *
     * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
     */
    public io.grpc.benchmarks.proto.Control.ScenarioResultSummary getSummary() {
      return summary_ == null ? io.grpc.benchmarks.proto.Control.ScenarioResultSummary.getDefaultInstance() : summary_;
    }
    /**
     * <pre>
     * An after-the-fact computed summary
     * </pre>
     *
     * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
     */
    public io.grpc.benchmarks.proto.Control.ScenarioResultSummaryOrBuilder getSummaryOrBuilder() {
      return getSummary();
    }

    public static final int CLIENT_SUCCESS_FIELD_NUMBER = 7;
    private java.util.List<java.lang.Boolean> clientSuccess_;
    /**
     * <pre>
     * Information on success or failure of each worker
     * </pre>
     *
     * <code>repeated bool client_success = 7;</code>
     */
    public java.util.List<java.lang.Boolean>
        getClientSuccessList() {
      return clientSuccess_;
    }
    /**
     * <pre>
     * Information on success or failure of each worker
     * </pre>
     *
     * <code>repeated bool client_success = 7;</code>
     */
    public int getClientSuccessCount() {
      return clientSuccess_.size();
    }
    /**
     * <pre>
     * Information on success or failure of each worker
     * </pre>
     *
     * <code>repeated bool client_success = 7;</code>
     */
    public boolean getClientSuccess(int index) {
      return clientSuccess_.get(index);
    }
    private int clientSuccessMemoizedSerializedSize = -1;

    public static final int SERVER_SUCCESS_FIELD_NUMBER = 8;
    private java.util.List<java.lang.Boolean> serverSuccess_;
    /**
     * <code>repeated bool server_success = 8;</code>
     */
    public java.util.List<java.lang.Boolean>
        getServerSuccessList() {
      return serverSuccess_;
    }
    /**
     * <code>repeated bool server_success = 8;</code>
     */
    public int getServerSuccessCount() {
      return serverSuccess_.size();
    }
    /**
     * <code>repeated bool server_success = 8;</code>
     */
    public boolean getServerSuccess(int index) {
      return serverSuccess_.get(index);
    }
    private int serverSuccessMemoizedSerializedSize = -1;

    public static final int REQUEST_RESULTS_FIELD_NUMBER = 9;
    private java.util.List<io.grpc.benchmarks.proto.Stats.RequestResultCount> requestResults_;
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    public java.util.List<io.grpc.benchmarks.proto.Stats.RequestResultCount> getRequestResultsList() {
      return requestResults_;
    }
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    public java.util.List<? extends io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder> 
        getRequestResultsOrBuilderList() {
      return requestResults_;
    }
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    public int getRequestResultsCount() {
      return requestResults_.size();
    }
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    public io.grpc.benchmarks.proto.Stats.RequestResultCount getRequestResults(int index) {
      return requestResults_.get(index);
    }
    /**
     * <pre>
     * Number of failed requests (one row per status code seen)
     * </pre>
     *
     * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
     */
    public io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder getRequestResultsOrBuilder(
        int index) {
      return requestResults_.get(index);
    }

    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 (scenario_ != null) {
        output.writeMessage(1, getScenario());
      }
      if (latencies_ != null) {
        output.writeMessage(2, getLatencies());
      }
      for (int i = 0; i < clientStats_.size(); i++) {
        output.writeMessage(3, clientStats_.get(i));
      }
      for (int i = 0; i < serverStats_.size(); i++) {
        output.writeMessage(4, serverStats_.get(i));
      }
      if (getServerCoresList().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(serverCoresMemoizedSerializedSize);
      }
      for (int i = 0; i < serverCores_.size(); i++) {
        output.writeInt32NoTag(serverCores_.get(i));
      }
      if (summary_ != null) {
        output.writeMessage(6, getSummary());
      }
      if (getClientSuccessList().size() > 0) {
        output.writeUInt32NoTag(58);
        output.writeUInt32NoTag(clientSuccessMemoizedSerializedSize);
      }
      for (int i = 0; i < clientSuccess_.size(); i++) {
        output.writeBoolNoTag(clientSuccess_.get(i));
      }
      if (getServerSuccessList().size() > 0) {
        output.writeUInt32NoTag(66);
        output.writeUInt32NoTag(serverSuccessMemoizedSerializedSize);
      }
      for (int i = 0; i < serverSuccess_.size(); i++) {
        output.writeBoolNoTag(serverSuccess_.get(i));
      }
      for (int i = 0; i < requestResults_.size(); i++) {
        output.writeMessage(9, requestResults_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (scenario_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getScenario());
      }
      if (latencies_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getLatencies());
      }
      for (int i = 0; i < clientStats_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, clientStats_.get(i));
      }
      for (int i = 0; i < serverStats_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, serverStats_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < serverCores_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(serverCores_.get(i));
        }
        size += dataSize;
        if (!getServerCoresList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        serverCoresMemoizedSerializedSize = dataSize;
      }
      if (summary_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getSummary());
      }
      {
        int dataSize = 0;
        dataSize = 1 * getClientSuccessList().size();
        size += dataSize;
        if (!getClientSuccessList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        clientSuccessMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 1 * getServerSuccessList().size();
        size += dataSize;
        if (!getServerSuccessList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        serverSuccessMemoizedSerializedSize = dataSize;
      }
      for (int i = 0; i < requestResults_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, requestResults_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.benchmarks.proto.Control.ScenarioResult)) {
        return super.equals(obj);
      }
      io.grpc.benchmarks.proto.Control.ScenarioResult other = (io.grpc.benchmarks.proto.Control.ScenarioResult) obj;

      boolean result = true;
      result = result && (hasScenario() == other.hasScenario());
      if (hasScenario()) {
        result = result && getScenario()
            .equals(other.getScenario());
      }
      result = result && (hasLatencies() == other.hasLatencies());
      if (hasLatencies()) {
        result = result && getLatencies()
            .equals(other.getLatencies());
      }
      result = result && getClientStatsList()
          .equals(other.getClientStatsList());
      result = result && getServerStatsList()
          .equals(other.getServerStatsList());
      result = result && getServerCoresList()
          .equals(other.getServerCoresList());
      result = result && (hasSummary() == other.hasSummary());
      if (hasSummary()) {
        result = result && getSummary()
            .equals(other.getSummary());
      }
      result = result && getClientSuccessList()
          .equals(other.getClientSuccessList());
      result = result && getServerSuccessList()
          .equals(other.getServerSuccessList());
      result = result && getRequestResultsList()
          .equals(other.getRequestResultsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasScenario()) {
        hash = (37 * hash) + SCENARIO_FIELD_NUMBER;
        hash = (53 * hash) + getScenario().hashCode();
      }
      if (hasLatencies()) {
        hash = (37 * hash) + LATENCIES_FIELD_NUMBER;
        hash = (53 * hash) + getLatencies().hashCode();
      }
      if (getClientStatsCount() > 0) {
        hash = (37 * hash) + CLIENT_STATS_FIELD_NUMBER;
        hash = (53 * hash) + getClientStatsList().hashCode();
      }
      if (getServerStatsCount() > 0) {
        hash = (37 * hash) + SERVER_STATS_FIELD_NUMBER;
        hash = (53 * hash) + getServerStatsList().hashCode();
      }
      if (getServerCoresCount() > 0) {
        hash = (37 * hash) + SERVER_CORES_FIELD_NUMBER;
        hash = (53 * hash) + getServerCoresList().hashCode();
      }
      if (hasSummary()) {
        hash = (37 * hash) + SUMMARY_FIELD_NUMBER;
        hash = (53 * hash) + getSummary().hashCode();
      }
      if (getClientSuccessCount() > 0) {
        hash = (37 * hash) + CLIENT_SUCCESS_FIELD_NUMBER;
        hash = (53 * hash) + getClientSuccessList().hashCode();
      }
      if (getServerSuccessCount() > 0) {
        hash = (37 * hash) + SERVER_SUCCESS_FIELD_NUMBER;
        hash = (53 * hash) + getServerSuccessList().hashCode();
      }
      if (getRequestResultsCount() > 0) {
        hash = (37 * hash) + REQUEST_RESULTS_FIELD_NUMBER;
        hash = (53 * hash) + getRequestResultsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.grpc.benchmarks.proto.Control.ScenarioResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult 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 io.grpc.benchmarks.proto.Control.ScenarioResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult 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 io.grpc.benchmarks.proto.Control.ScenarioResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.grpc.benchmarks.proto.Control.ScenarioResult 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(io.grpc.benchmarks.proto.Control.ScenarioResult 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;
    }
    /**
     * <pre>
     * Results of a single benchmark scenario.
     * </pre>
     *
     * Protobuf type {@code grpc.testing.ScenarioResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.testing.ScenarioResult)
        io.grpc.benchmarks.proto.Control.ScenarioResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.benchmarks.proto.Control.ScenarioResult.class, io.grpc.benchmarks.proto.Control.ScenarioResult.Builder.class);
      }

      // Construct using io.grpc.benchmarks.proto.Control.ScenarioResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getClientStatsFieldBuilder();
          getServerStatsFieldBuilder();
          getRequestResultsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (scenarioBuilder_ == null) {
          scenario_ = null;
        } else {
          scenario_ = null;
          scenarioBuilder_ = null;
        }
        if (latenciesBuilder_ == null) {
          latencies_ = null;
        } else {
          latencies_ = null;
          latenciesBuilder_ = null;
        }
        if (clientStatsBuilder_ == null) {
          clientStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          clientStatsBuilder_.clear();
        }
        if (serverStatsBuilder_ == null) {
          serverStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          serverStatsBuilder_.clear();
        }
        serverCores_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        if (summaryBuilder_ == null) {
          summary_ = null;
        } else {
          summary_ = null;
          summaryBuilder_ = null;
        }
        clientSuccess_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        serverSuccess_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        if (requestResultsBuilder_ == null) {
          requestResults_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
        } else {
          requestResultsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.benchmarks.proto.Control.internal_static_grpc_testing_ScenarioResult_descriptor;
      }

      public io.grpc.benchmarks.proto.Control.ScenarioResult getDefaultInstanceForType() {
        return io.grpc.benchmarks.proto.Control.ScenarioResult.getDefaultInstance();
      }

      public io.grpc.benchmarks.proto.Control.ScenarioResult build() {
        io.grpc.benchmarks.proto.Control.ScenarioResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.benchmarks.proto.Control.ScenarioResult buildPartial() {
        io.grpc.benchmarks.proto.Control.ScenarioResult result = new io.grpc.benchmarks.proto.Control.ScenarioResult(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (scenarioBuilder_ == null) {
          result.scenario_ = scenario_;
        } else {
          result.scenario_ = scenarioBuilder_.build();
        }
        if (latenciesBuilder_ == null) {
          result.latencies_ = latencies_;
        } else {
          result.latencies_ = latenciesBuilder_.build();
        }
        if (clientStatsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            clientStats_ = java.util.Collections.unmodifiableList(clientStats_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.clientStats_ = clientStats_;
        } else {
          result.clientStats_ = clientStatsBuilder_.build();
        }
        if (serverStatsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            serverStats_ = java.util.Collections.unmodifiableList(serverStats_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.serverStats_ = serverStats_;
        } else {
          result.serverStats_ = serverStatsBuilder_.build();
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          serverCores_ = java.util.Collections.unmodifiableList(serverCores_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.serverCores_ = serverCores_;
        if (summaryBuilder_ == null) {
          result.summary_ = summary_;
        } else {
          result.summary_ = summaryBuilder_.build();
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          clientSuccess_ = java.util.Collections.unmodifiableList(clientSuccess_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.clientSuccess_ = clientSuccess_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          serverSuccess_ = java.util.Collections.unmodifiableList(serverSuccess_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.serverSuccess_ = serverSuccess_;
        if (requestResultsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100)) {
            requestResults_ = java.util.Collections.unmodifiableList(requestResults_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.requestResults_ = requestResults_;
        } else {
          result.requestResults_ = requestResultsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.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, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.grpc.benchmarks.proto.Control.ScenarioResult) {
          return mergeFrom((io.grpc.benchmarks.proto.Control.ScenarioResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.grpc.benchmarks.proto.Control.ScenarioResult other) {
        if (other == io.grpc.benchmarks.proto.Control.ScenarioResult.getDefaultInstance()) return this;
        if (other.hasScenario()) {
          mergeScenario(other.getScenario());
        }
        if (other.hasLatencies()) {
          mergeLatencies(other.getLatencies());
        }
        if (clientStatsBuilder_ == null) {
          if (!other.clientStats_.isEmpty()) {
            if (clientStats_.isEmpty()) {
              clientStats_ = other.clientStats_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureClientStatsIsMutable();
              clientStats_.addAll(other.clientStats_);
            }
            onChanged();
          }
        } else {
          if (!other.clientStats_.isEmpty()) {
            if (clientStatsBuilder_.isEmpty()) {
              clientStatsBuilder_.dispose();
              clientStatsBuilder_ = null;
              clientStats_ = other.clientStats_;
              bitField0_ = (bitField0_ & ~0x00000004);
              clientStatsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getClientStatsFieldBuilder() : null;
            } else {
              clientStatsBuilder_.addAllMessages(other.clientStats_);
            }
          }
        }
        if (serverStatsBuilder_ == null) {
          if (!other.serverStats_.isEmpty()) {
            if (serverStats_.isEmpty()) {
              serverStats_ = other.serverStats_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureServerStatsIsMutable();
              serverStats_.addAll(other.serverStats_);
            }
            onChanged();
          }
        } else {
          if (!other.serverStats_.isEmpty()) {
            if (serverStatsBuilder_.isEmpty()) {
              serverStatsBuilder_.dispose();
              serverStatsBuilder_ = null;
              serverStats_ = other.serverStats_;
              bitField0_ = (bitField0_ & ~0x00000008);
              serverStatsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServerStatsFieldBuilder() : null;
            } else {
              serverStatsBuilder_.addAllMessages(other.serverStats_);
            }
          }
        }
        if (!other.serverCores_.isEmpty()) {
          if (serverCores_.isEmpty()) {
            serverCores_ = other.serverCores_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureServerCoresIsMutable();
            serverCores_.addAll(other.serverCores_);
          }
          onChanged();
        }
        if (other.hasSummary()) {
          mergeSummary(other.getSummary());
        }
        if (!other.clientSuccess_.isEmpty()) {
          if (clientSuccess_.isEmpty()) {
            clientSuccess_ = other.clientSuccess_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureClientSuccessIsMutable();
            clientSuccess_.addAll(other.clientSuccess_);
          }
          onChanged();
        }
        if (!other.serverSuccess_.isEmpty()) {
          if (serverSuccess_.isEmpty()) {
            serverSuccess_ = other.serverSuccess_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureServerSuccessIsMutable();
            serverSuccess_.addAll(other.serverSuccess_);
          }
          onChanged();
        }
        if (requestResultsBuilder_ == null) {
          if (!other.requestResults_.isEmpty()) {
            if (requestResults_.isEmpty()) {
              requestResults_ = other.requestResults_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureRequestResultsIsMutable();
              requestResults_.addAll(other.requestResults_);
            }
            onChanged();
          }
        } else {
          if (!other.requestResults_.isEmpty()) {
            if (requestResultsBuilder_.isEmpty()) {
              requestResultsBuilder_.dispose();
              requestResultsBuilder_ = null;
              requestResults_ = other.requestResults_;
              bitField0_ = (bitField0_ & ~0x00000100);
              requestResultsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRequestResultsFieldBuilder() : null;
            } else {
              requestResultsBuilder_.addAllMessages(other.requestResults_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.grpc.benchmarks.proto.Control.ScenarioResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.benchmarks.proto.Control.ScenarioResult) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.grpc.benchmarks.proto.Control.Scenario scenario_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.Scenario, io.grpc.benchmarks.proto.Control.Scenario.Builder, io.grpc.benchmarks.proto.Control.ScenarioOrBuilder> scenarioBuilder_;
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      public boolean hasScenario() {
        return scenarioBuilder_ != null || scenario_ != null;
      }
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.Scenario getScenario() {
        if (scenarioBuilder_ == null) {
          return scenario_ == null ? io.grpc.benchmarks.proto.Control.Scenario.getDefaultInstance() : scenario_;
        } else {
          return scenarioBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      public Builder setScenario(io.grpc.benchmarks.proto.Control.Scenario value) {
        if (scenarioBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scenario_ = value;
          onChanged();
        } else {
          scenarioBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      public Builder setScenario(
          io.grpc.benchmarks.proto.Control.Scenario.Builder builderForValue) {
        if (scenarioBuilder_ == null) {
          scenario_ = builderForValue.build();
          onChanged();
        } else {
          scenarioBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      public Builder mergeScenario(io.grpc.benchmarks.proto.Control.Scenario value) {
        if (scenarioBuilder_ == null) {
          if (scenario_ != null) {
            scenario_ =
              io.grpc.benchmarks.proto.Control.Scenario.newBuilder(scenario_).mergeFrom(value).buildPartial();
          } else {
            scenario_ = value;
          }
          onChanged();
        } else {
          scenarioBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      public Builder clearScenario() {
        if (scenarioBuilder_ == null) {
          scenario_ = null;
          onChanged();
        } else {
          scenario_ = null;
          scenarioBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.Scenario.Builder getScenarioBuilder() {
        
        onChanged();
        return getScenarioFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      public io.grpc.benchmarks.proto.Control.ScenarioOrBuilder getScenarioOrBuilder() {
        if (scenarioBuilder_ != null) {
          return scenarioBuilder_.getMessageOrBuilder();
        } else {
          return scenario_ == null ?
              io.grpc.benchmarks.proto.Control.Scenario.getDefaultInstance() : scenario_;
        }
      }
      /**
       * <pre>
       * Inputs used to run the scenario.
       * </pre>
       *
       * <code>.grpc.testing.Scenario scenario = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.Scenario, io.grpc.benchmarks.proto.Control.Scenario.Builder, io.grpc.benchmarks.proto.Control.ScenarioOrBuilder> 
          getScenarioFieldBuilder() {
        if (scenarioBuilder_ == null) {
          scenarioBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.Scenario, io.grpc.benchmarks.proto.Control.Scenario.Builder, io.grpc.benchmarks.proto.Control.ScenarioOrBuilder>(
                  getScenario(),
                  getParentForChildren(),
                  isClean());
          scenario_ = null;
        }
        return scenarioBuilder_;
      }

      private io.grpc.benchmarks.proto.Stats.HistogramData latencies_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.HistogramData, io.grpc.benchmarks.proto.Stats.HistogramData.Builder, io.grpc.benchmarks.proto.Stats.HistogramDataOrBuilder> latenciesBuilder_;
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      public boolean hasLatencies() {
        return latenciesBuilder_ != null || latencies_ != null;
      }
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      public io.grpc.benchmarks.proto.Stats.HistogramData getLatencies() {
        if (latenciesBuilder_ == null) {
          return latencies_ == null ? io.grpc.benchmarks.proto.Stats.HistogramData.getDefaultInstance() : latencies_;
        } else {
          return latenciesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      public Builder setLatencies(io.grpc.benchmarks.proto.Stats.HistogramData value) {
        if (latenciesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          latencies_ = value;
          onChanged();
        } else {
          latenciesBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      public Builder setLatencies(
          io.grpc.benchmarks.proto.Stats.HistogramData.Builder builderForValue) {
        if (latenciesBuilder_ == null) {
          latencies_ = builderForValue.build();
          onChanged();
        } else {
          latenciesBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      public Builder mergeLatencies(io.grpc.benchmarks.proto.Stats.HistogramData value) {
        if (latenciesBuilder_ == null) {
          if (latencies_ != null) {
            latencies_ =
              io.grpc.benchmarks.proto.Stats.HistogramData.newBuilder(latencies_).mergeFrom(value).buildPartial();
          } else {
            latencies_ = value;
          }
          onChanged();
        } else {
          latenciesBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      public Builder clearLatencies() {
        if (latenciesBuilder_ == null) {
          latencies_ = null;
          onChanged();
        } else {
          latencies_ = null;
          latenciesBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      public io.grpc.benchmarks.proto.Stats.HistogramData.Builder getLatenciesBuilder() {
        
        onChanged();
        return getLatenciesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      public io.grpc.benchmarks.proto.Stats.HistogramDataOrBuilder getLatenciesOrBuilder() {
        if (latenciesBuilder_ != null) {
          return latenciesBuilder_.getMessageOrBuilder();
        } else {
          return latencies_ == null ?
              io.grpc.benchmarks.proto.Stats.HistogramData.getDefaultInstance() : latencies_;
        }
      }
      /**
       * <pre>
       * Histograms from all clients merged into one histogram.
       * </pre>
       *
       * <code>.grpc.testing.HistogramData latencies = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.HistogramData, io.grpc.benchmarks.proto.Stats.HistogramData.Builder, io.grpc.benchmarks.proto.Stats.HistogramDataOrBuilder> 
          getLatenciesFieldBuilder() {
        if (latenciesBuilder_ == null) {
          latenciesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Stats.HistogramData, io.grpc.benchmarks.proto.Stats.HistogramData.Builder, io.grpc.benchmarks.proto.Stats.HistogramDataOrBuilder>(
                  getLatencies(),
                  getParentForChildren(),
                  isClean());
          latencies_ = null;
        }
        return latenciesBuilder_;
      }

      private java.util.List<io.grpc.benchmarks.proto.Stats.ClientStats> clientStats_ =
        java.util.Collections.emptyList();
      private void ensureClientStatsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          clientStats_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Stats.ClientStats>(clientStats_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.ClientStats, io.grpc.benchmarks.proto.Stats.ClientStats.Builder, io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder> clientStatsBuilder_;

      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Stats.ClientStats> getClientStatsList() {
        if (clientStatsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(clientStats_);
        } else {
          return clientStatsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public int getClientStatsCount() {
        if (clientStatsBuilder_ == null) {
          return clientStats_.size();
        } else {
          return clientStatsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ClientStats getClientStats(int index) {
        if (clientStatsBuilder_ == null) {
          return clientStats_.get(index);
        } else {
          return clientStatsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder setClientStats(
          int index, io.grpc.benchmarks.proto.Stats.ClientStats value) {
        if (clientStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClientStatsIsMutable();
          clientStats_.set(index, value);
          onChanged();
        } else {
          clientStatsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder setClientStats(
          int index, io.grpc.benchmarks.proto.Stats.ClientStats.Builder builderForValue) {
        if (clientStatsBuilder_ == null) {
          ensureClientStatsIsMutable();
          clientStats_.set(index, builderForValue.build());
          onChanged();
        } else {
          clientStatsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder addClientStats(io.grpc.benchmarks.proto.Stats.ClientStats value) {
        if (clientStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClientStatsIsMutable();
          clientStats_.add(value);
          onChanged();
        } else {
          clientStatsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder addClientStats(
          int index, io.grpc.benchmarks.proto.Stats.ClientStats value) {
        if (clientStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClientStatsIsMutable();
          clientStats_.add(index, value);
          onChanged();
        } else {
          clientStatsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder addClientStats(
          io.grpc.benchmarks.proto.Stats.ClientStats.Builder builderForValue) {
        if (clientStatsBuilder_ == null) {
          ensureClientStatsIsMutable();
          clientStats_.add(builderForValue.build());
          onChanged();
        } else {
          clientStatsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder addClientStats(
          int index, io.grpc.benchmarks.proto.Stats.ClientStats.Builder builderForValue) {
        if (clientStatsBuilder_ == null) {
          ensureClientStatsIsMutable();
          clientStats_.add(index, builderForValue.build());
          onChanged();
        } else {
          clientStatsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder addAllClientStats(
          java.lang.Iterable<? extends io.grpc.benchmarks.proto.Stats.ClientStats> values) {
        if (clientStatsBuilder_ == null) {
          ensureClientStatsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, clientStats_);
          onChanged();
        } else {
          clientStatsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder clearClientStats() {
        if (clientStatsBuilder_ == null) {
          clientStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          clientStatsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public Builder removeClientStats(int index) {
        if (clientStatsBuilder_ == null) {
          ensureClientStatsIsMutable();
          clientStats_.remove(index);
          onChanged();
        } else {
          clientStatsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ClientStats.Builder getClientStatsBuilder(
          int index) {
        return getClientStatsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder getClientStatsOrBuilder(
          int index) {
        if (clientStatsBuilder_ == null) {
          return clientStats_.get(index);  } else {
          return clientStatsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public java.util.List<? extends io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder> 
           getClientStatsOrBuilderList() {
        if (clientStatsBuilder_ != null) {
          return clientStatsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(clientStats_);
        }
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ClientStats.Builder addClientStatsBuilder() {
        return getClientStatsFieldBuilder().addBuilder(
            io.grpc.benchmarks.proto.Stats.ClientStats.getDefaultInstance());
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ClientStats.Builder addClientStatsBuilder(
          int index) {
        return getClientStatsFieldBuilder().addBuilder(
            index, io.grpc.benchmarks.proto.Stats.ClientStats.getDefaultInstance());
      }
      /**
       * <pre>
       * Client stats for each client
       * </pre>
       *
       * <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Stats.ClientStats.Builder> 
           getClientStatsBuilderList() {
        return getClientStatsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.ClientStats, io.grpc.benchmarks.proto.Stats.ClientStats.Builder, io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder> 
          getClientStatsFieldBuilder() {
        if (clientStatsBuilder_ == null) {
          clientStatsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.grpc.benchmarks.proto.Stats.ClientStats, io.grpc.benchmarks.proto.Stats.ClientStats.Builder, io.grpc.benchmarks.proto.Stats.ClientStatsOrBuilder>(
                  clientStats_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          clientStats_ = null;
        }
        return clientStatsBuilder_;
      }

      private java.util.List<io.grpc.benchmarks.proto.Stats.ServerStats> serverStats_ =
        java.util.Collections.emptyList();
      private void ensureServerStatsIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          serverStats_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Stats.ServerStats>(serverStats_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.ServerStats, io.grpc.benchmarks.proto.Stats.ServerStats.Builder, io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder> serverStatsBuilder_;

      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Stats.ServerStats> getServerStatsList() {
        if (serverStatsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(serverStats_);
        } else {
          return serverStatsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public int getServerStatsCount() {
        if (serverStatsBuilder_ == null) {
          return serverStats_.size();
        } else {
          return serverStatsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ServerStats getServerStats(int index) {
        if (serverStatsBuilder_ == null) {
          return serverStats_.get(index);
        } else {
          return serverStatsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder setServerStats(
          int index, io.grpc.benchmarks.proto.Stats.ServerStats value) {
        if (serverStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServerStatsIsMutable();
          serverStats_.set(index, value);
          onChanged();
        } else {
          serverStatsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder setServerStats(
          int index, io.grpc.benchmarks.proto.Stats.ServerStats.Builder builderForValue) {
        if (serverStatsBuilder_ == null) {
          ensureServerStatsIsMutable();
          serverStats_.set(index, builderForValue.build());
          onChanged();
        } else {
          serverStatsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder addServerStats(io.grpc.benchmarks.proto.Stats.ServerStats value) {
        if (serverStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServerStatsIsMutable();
          serverStats_.add(value);
          onChanged();
        } else {
          serverStatsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder addServerStats(
          int index, io.grpc.benchmarks.proto.Stats.ServerStats value) {
        if (serverStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServerStatsIsMutable();
          serverStats_.add(index, value);
          onChanged();
        } else {
          serverStatsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder addServerStats(
          io.grpc.benchmarks.proto.Stats.ServerStats.Builder builderForValue) {
        if (serverStatsBuilder_ == null) {
          ensureServerStatsIsMutable();
          serverStats_.add(builderForValue.build());
          onChanged();
        } else {
          serverStatsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder addServerStats(
          int index, io.grpc.benchmarks.proto.Stats.ServerStats.Builder builderForValue) {
        if (serverStatsBuilder_ == null) {
          ensureServerStatsIsMutable();
          serverStats_.add(index, builderForValue.build());
          onChanged();
        } else {
          serverStatsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder addAllServerStats(
          java.lang.Iterable<? extends io.grpc.benchmarks.proto.Stats.ServerStats> values) {
        if (serverStatsBuilder_ == null) {
          ensureServerStatsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, serverStats_);
          onChanged();
        } else {
          serverStatsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder clearServerStats() {
        if (serverStatsBuilder_ == null) {
          serverStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          serverStatsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public Builder removeServerStats(int index) {
        if (serverStatsBuilder_ == null) {
          ensureServerStatsIsMutable();
          serverStats_.remove(index);
          onChanged();
        } else {
          serverStatsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ServerStats.Builder getServerStatsBuilder(
          int index) {
        return getServerStatsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder getServerStatsOrBuilder(
          int index) {
        if (serverStatsBuilder_ == null) {
          return serverStats_.get(index);  } else {
          return serverStatsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public java.util.List<? extends io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder> 
           getServerStatsOrBuilderList() {
        if (serverStatsBuilder_ != null) {
          return serverStatsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(serverStats_);
        }
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ServerStats.Builder addServerStatsBuilder() {
        return getServerStatsFieldBuilder().addBuilder(
            io.grpc.benchmarks.proto.Stats.ServerStats.getDefaultInstance());
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public io.grpc.benchmarks.proto.Stats.ServerStats.Builder addServerStatsBuilder(
          int index) {
        return getServerStatsFieldBuilder().addBuilder(
            index, io.grpc.benchmarks.proto.Stats.ServerStats.getDefaultInstance());
      }
      /**
       * <pre>
       * Server stats for each server
       * </pre>
       *
       * <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Stats.ServerStats.Builder> 
           getServerStatsBuilderList() {
        return getServerStatsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.ServerStats, io.grpc.benchmarks.proto.Stats.ServerStats.Builder, io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder> 
          getServerStatsFieldBuilder() {
        if (serverStatsBuilder_ == null) {
          serverStatsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.grpc.benchmarks.proto.Stats.ServerStats, io.grpc.benchmarks.proto.Stats.ServerStats.Builder, io.grpc.benchmarks.proto.Stats.ServerStatsOrBuilder>(
                  serverStats_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          serverStats_ = null;
        }
        return serverStatsBuilder_;
      }

      private java.util.List<java.lang.Integer> serverCores_ = java.util.Collections.emptyList();
      private void ensureServerCoresIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          serverCores_ = new java.util.ArrayList<java.lang.Integer>(serverCores_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * Number of cores available to each server
       * </pre>
       *
       * <code>repeated int32 server_cores = 5;</code>
       */
      public java.util.List<java.lang.Integer>
          getServerCoresList() {
        return java.util.Collections.unmodifiableList(serverCores_);
      }
      /**
       * <pre>
       * Number of cores available to each server
       * </pre>
       *
       * <code>repeated int32 server_cores = 5;</code>
       */
      public int getServerCoresCount() {
        return serverCores_.size();
      }
      /**
       * <pre>
       * Number of cores available to each server
       * </pre>
       *
       * <code>repeated int32 server_cores = 5;</code>
       */
      public int getServerCores(int index) {
        return serverCores_.get(index);
      }
      /**
       * <pre>
       * Number of cores available to each server
       * </pre>
       *
       * <code>repeated int32 server_cores = 5;</code>
       */
      public Builder setServerCores(
          int index, int value) {
        ensureServerCoresIsMutable();
        serverCores_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of cores available to each server
       * </pre>
       *
       * <code>repeated int32 server_cores = 5;</code>
       */
      public Builder addServerCores(int value) {
        ensureServerCoresIsMutable();
        serverCores_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of cores available to each server
       * </pre>
       *
       * <code>repeated int32 server_cores = 5;</code>
       */
      public Builder addAllServerCores(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureServerCoresIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, serverCores_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of cores available to each server
       * </pre>
       *
       * <code>repeated int32 server_cores = 5;</code>
       */
      public Builder clearServerCores() {
        serverCores_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private io.grpc.benchmarks.proto.Control.ScenarioResultSummary summary_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ScenarioResultSummary, io.grpc.benchmarks.proto.Control.ScenarioResultSummary.Builder, io.grpc.benchmarks.proto.Control.ScenarioResultSummaryOrBuilder> summaryBuilder_;
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      public boolean hasSummary() {
        return summaryBuilder_ != null || summary_ != null;
      }
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      public io.grpc.benchmarks.proto.Control.ScenarioResultSummary getSummary() {
        if (summaryBuilder_ == null) {
          return summary_ == null ? io.grpc.benchmarks.proto.Control.ScenarioResultSummary.getDefaultInstance() : summary_;
        } else {
          return summaryBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      public Builder setSummary(io.grpc.benchmarks.proto.Control.ScenarioResultSummary value) {
        if (summaryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          summary_ = value;
          onChanged();
        } else {
          summaryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      public Builder setSummary(
          io.grpc.benchmarks.proto.Control.ScenarioResultSummary.Builder builderForValue) {
        if (summaryBuilder_ == null) {
          summary_ = builderForValue.build();
          onChanged();
        } else {
          summaryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      public Builder mergeSummary(io.grpc.benchmarks.proto.Control.ScenarioResultSummary value) {
        if (summaryBuilder_ == null) {
          if (summary_ != null) {
            summary_ =
              io.grpc.benchmarks.proto.Control.ScenarioResultSummary.newBuilder(summary_).mergeFrom(value).buildPartial();
          } else {
            summary_ = value;
          }
          onChanged();
        } else {
          summaryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      public Builder clearSummary() {
        if (summaryBuilder_ == null) {
          summary_ = null;
          onChanged();
        } else {
          summary_ = null;
          summaryBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      public io.grpc.benchmarks.proto.Control.ScenarioResultSummary.Builder getSummaryBuilder() {
        
        onChanged();
        return getSummaryFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      public io.grpc.benchmarks.proto.Control.ScenarioResultSummaryOrBuilder getSummaryOrBuilder() {
        if (summaryBuilder_ != null) {
          return summaryBuilder_.getMessageOrBuilder();
        } else {
          return summary_ == null ?
              io.grpc.benchmarks.proto.Control.ScenarioResultSummary.getDefaultInstance() : summary_;
        }
      }
      /**
       * <pre>
       * An after-the-fact computed summary
       * </pre>
       *
       * <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.grpc.benchmarks.proto.Control.ScenarioResultSummary, io.grpc.benchmarks.proto.Control.ScenarioResultSummary.Builder, io.grpc.benchmarks.proto.Control.ScenarioResultSummaryOrBuilder> 
          getSummaryFieldBuilder() {
        if (summaryBuilder_ == null) {
          summaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.grpc.benchmarks.proto.Control.ScenarioResultSummary, io.grpc.benchmarks.proto.Control.ScenarioResultSummary.Builder, io.grpc.benchmarks.proto.Control.ScenarioResultSummaryOrBuilder>(
                  getSummary(),
                  getParentForChildren(),
                  isClean());
          summary_ = null;
        }
        return summaryBuilder_;
      }

      private java.util.List<java.lang.Boolean> clientSuccess_ = java.util.Collections.emptyList();
      private void ensureClientSuccessIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          clientSuccess_ = new java.util.ArrayList<java.lang.Boolean>(clientSuccess_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <pre>
       * Information on success or failure of each worker
       * </pre>
       *
       * <code>repeated bool client_success = 7;</code>
       */
      public java.util.List<java.lang.Boolean>
          getClientSuccessList() {
        return java.util.Collections.unmodifiableList(clientSuccess_);
      }
      /**
       * <pre>
       * Information on success or failure of each worker
       * </pre>
       *
       * <code>repeated bool client_success = 7;</code>
       */
      public int getClientSuccessCount() {
        return clientSuccess_.size();
      }
      /**
       * <pre>
       * Information on success or failure of each worker
       * </pre>
       *
       * <code>repeated bool client_success = 7;</code>
       */
      public boolean getClientSuccess(int index) {
        return clientSuccess_.get(index);
      }
      /**
       * <pre>
       * Information on success or failure of each worker
       * </pre>
       *
       * <code>repeated bool client_success = 7;</code>
       */
      public Builder setClientSuccess(
          int index, boolean value) {
        ensureClientSuccessIsMutable();
        clientSuccess_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Information on success or failure of each worker
       * </pre>
       *
       * <code>repeated bool client_success = 7;</code>
       */
      public Builder addClientSuccess(boolean value) {
        ensureClientSuccessIsMutable();
        clientSuccess_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Information on success or failure of each worker
       * </pre>
       *
       * <code>repeated bool client_success = 7;</code>
       */
      public Builder addAllClientSuccess(
          java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureClientSuccessIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, clientSuccess_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Information on success or failure of each worker
       * </pre>
       *
       * <code>repeated bool client_success = 7;</code>
       */
      public Builder clearClientSuccess() {
        clientSuccess_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Boolean> serverSuccess_ = java.util.Collections.emptyList();
      private void ensureServerSuccessIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          serverSuccess_ = new java.util.ArrayList<java.lang.Boolean>(serverSuccess_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * <code>repeated bool server_success = 8;</code>
       */
      public java.util.List<java.lang.Boolean>
          getServerSuccessList() {
        return java.util.Collections.unmodifiableList(serverSuccess_);
      }
      /**
       * <code>repeated bool server_success = 8;</code>
       */
      public int getServerSuccessCount() {
        return serverSuccess_.size();
      }
      /**
       * <code>repeated bool server_success = 8;</code>
       */
      public boolean getServerSuccess(int index) {
        return serverSuccess_.get(index);
      }
      /**
       * <code>repeated bool server_success = 8;</code>
       */
      public Builder setServerSuccess(
          int index, boolean value) {
        ensureServerSuccessIsMutable();
        serverSuccess_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool server_success = 8;</code>
       */
      public Builder addServerSuccess(boolean value) {
        ensureServerSuccessIsMutable();
        serverSuccess_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool server_success = 8;</code>
       */
      public Builder addAllServerSuccess(
          java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureServerSuccessIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, serverSuccess_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool server_success = 8;</code>
       */
      public Builder clearServerSuccess() {
        serverSuccess_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }

      private java.util.List<io.grpc.benchmarks.proto.Stats.RequestResultCount> requestResults_ =
        java.util.Collections.emptyList();
      private void ensureRequestResultsIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          requestResults_ = new java.util.ArrayList<io.grpc.benchmarks.proto.Stats.RequestResultCount>(requestResults_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.RequestResultCount, io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder, io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder> requestResultsBuilder_;

      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Stats.RequestResultCount> getRequestResultsList() {
        if (requestResultsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(requestResults_);
        } else {
          return requestResultsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public int getRequestResultsCount() {
        if (requestResultsBuilder_ == null) {
          return requestResults_.size();
        } else {
          return requestResultsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public io.grpc.benchmarks.proto.Stats.RequestResultCount getRequestResults(int index) {
        if (requestResultsBuilder_ == null) {
          return requestResults_.get(index);
        } else {
          return requestResultsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder setRequestResults(
          int index, io.grpc.benchmarks.proto.Stats.RequestResultCount value) {
        if (requestResultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestResultsIsMutable();
          requestResults_.set(index, value);
          onChanged();
        } else {
          requestResultsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder setRequestResults(
          int index, io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder builderForValue) {
        if (requestResultsBuilder_ == null) {
          ensureRequestResultsIsMutable();
          requestResults_.set(index, builderForValue.build());
          onChanged();
        } else {
          requestResultsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder addRequestResults(io.grpc.benchmarks.proto.Stats.RequestResultCount value) {
        if (requestResultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestResultsIsMutable();
          requestResults_.add(value);
          onChanged();
        } else {
          requestResultsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder addRequestResults(
          int index, io.grpc.benchmarks.proto.Stats.RequestResultCount value) {
        if (requestResultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestResultsIsMutable();
          requestResults_.add(index, value);
          onChanged();
        } else {
          requestResultsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder addRequestResults(
          io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder builderForValue) {
        if (requestResultsBuilder_ == null) {
          ensureRequestResultsIsMutable();
          requestResults_.add(builderForValue.build());
          onChanged();
        } else {
          requestResultsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder addRequestResults(
          int index, io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder builderForValue) {
        if (requestResultsBuilder_ == null) {
          ensureRequestResultsIsMutable();
          requestResults_.add(index, builderForValue.build());
          onChanged();
        } else {
          requestResultsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder addAllRequestResults(
          java.lang.Iterable<? extends io.grpc.benchmarks.proto.Stats.RequestResultCount> values) {
        if (requestResultsBuilder_ == null) {
          ensureRequestResultsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, requestResults_);
          onChanged();
        } else {
          requestResultsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder clearRequestResults() {
        if (requestResultsBuilder_ == null) {
          requestResults_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          requestResultsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public Builder removeRequestResults(int index) {
        if (requestResultsBuilder_ == null) {
          ensureRequestResultsIsMutable();
          requestResults_.remove(index);
          onChanged();
        } else {
          requestResultsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder getRequestResultsBuilder(
          int index) {
        return getRequestResultsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder getRequestResultsOrBuilder(
          int index) {
        if (requestResultsBuilder_ == null) {
          return requestResults_.get(index);  } else {
          return requestResultsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public java.util.List<? extends io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder> 
           getRequestResultsOrBuilderList() {
        if (requestResultsBuilder_ != null) {
          return requestResultsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(requestResults_);
        }
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder addRequestResultsBuilder() {
        return getRequestResultsFieldBuilder().addBuilder(
            io.grpc.benchmarks.proto.Stats.RequestResultCount.getDefaultInstance());
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder addRequestResultsBuilder(
          int index) {
        return getRequestResultsFieldBuilder().addBuilder(
            index, io.grpc.benchmarks.proto.Stats.RequestResultCount.getDefaultInstance());
      }
      /**
       * <pre>
       * Number of failed requests (one row per status code seen)
       * </pre>
       *
       * <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
       */
      public java.util.List<io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder> 
           getRequestResultsBuilderList() {
        return getRequestResultsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.grpc.benchmarks.proto.Stats.RequestResultCount, io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder, io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder> 
          getRequestResultsFieldBuilder() {
        if (requestResultsBuilder_ == null) {
          requestResultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.grpc.benchmarks.proto.Stats.RequestResultCount, io.grpc.benchmarks.proto.Stats.RequestResultCount.Builder, io.grpc.benchmarks.proto.Stats.RequestResultCountOrBuilder>(
                  requestResults_,
                  ((bitField0_ & 0x00000100) == 0x00000100),
                  getParentForChildren(),
                  isClean());
          requestResults_ = null;
        }
        return requestResultsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.testing.ScenarioResult)
    }

    // @@protoc_insertion_point(class_scope:grpc.testing.ScenarioResult)
    private static final io.grpc.benchmarks.proto.Control.ScenarioResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.benchmarks.proto.Control.ScenarioResult();
    }

    public static io.grpc.benchmarks.proto.Control.ScenarioResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.benchmarks.proto.Control.ScenarioResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_PoissonParams_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_PoissonParams_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ClosedLoopParams_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ClosedLoopParams_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_LoadParams_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_LoadParams_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_SecurityParams_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_SecurityParams_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ChannelArg_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ChannelArg_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ClientConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ClientConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ClientStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ClientStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_Mark_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_Mark_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ClientArgs_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ClientArgs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ServerConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ServerConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ServerArgs_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ServerArgs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ServerStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ServerStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_CoreRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_CoreRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_CoreResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_CoreResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_Void_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_Void_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_Scenario_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_Scenario_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_Scenarios_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_Scenarios_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ScenarioResultSummary_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ScenarioResultSummary_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_grpc_testing_ScenarioResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_grpc_testing_ScenarioResult_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\rcontrol.proto\022\014grpc.testing\032\016payloads." +
      "proto\032\013stats.proto\"%\n\rPoissonParams\022\024\n\014o" +
      "ffered_load\030\001 \001(\001\"\022\n\020ClosedLoopParams\"{\n" +
      "\nLoadParams\0225\n\013closed_loop\030\001 \001(\0132\036.grpc." +
      "testing.ClosedLoopParamsH\000\022.\n\007poisson\030\002 " +
      "\001(\0132\033.grpc.testing.PoissonParamsH\000B\006\n\004lo" +
      "ad\"C\n\016SecurityParams\022\023\n\013use_test_ca\030\001 \001(" +
      "\010\022\034\n\024server_host_override\030\002 \001(\t\"M\n\nChann" +
      "elArg\022\014\n\004name\030\001 \001(\t\022\023\n\tstr_value\030\002 \001(\tH\000" +
      "\022\023\n\tint_value\030\003 \001(\005H\000B\007\n\005value\"\275\004\n\014Clien" +
      "tConfig\022\026\n\016server_targets\030\001 \003(\t\022-\n\013clien" +
      "t_type\030\002 \001(\0162\030.grpc.testing.ClientType\0225" +
      "\n\017security_params\030\003 \001(\0132\034.grpc.testing.S" +
      "ecurityParams\022$\n\034outstanding_rpcs_per_ch" +
      "annel\030\004 \001(\005\022\027\n\017client_channels\030\005 \001(\005\022\034\n\024" +
      "async_client_threads\030\007 \001(\005\022\'\n\010rpc_type\030\010" +
      " \001(\0162\025.grpc.testing.RpcType\022-\n\013load_para" +
      "ms\030\n \001(\0132\030.grpc.testing.LoadParams\0223\n\016pa" +
      "yload_config\030\013 \001(\0132\033.grpc.testing.Payloa" +
      "dConfig\0227\n\020histogram_params\030\014 \001(\0132\035.grpc" +
      ".testing.HistogramParams\022\021\n\tcore_list\030\r " +
      "\003(\005\022\022\n\ncore_limit\030\016 \001(\005\022\030\n\020other_client_" +
      "api\030\017 \001(\t\022.\n\014channel_args\030\020 \003(\0132\030.grpc.t" +
      "esting.ChannelArg\022\033\n\023messages_per_stream" +
      "\030\022 \001(\005\"8\n\014ClientStatus\022(\n\005stats\030\001 \001(\0132\031." +
      "grpc.testing.ClientStats\"\025\n\004Mark\022\r\n\005rese" +
      "t\030\001 \001(\010\"h\n\nClientArgs\022+\n\005setup\030\001 \001(\0132\032.g" +
      "rpc.testing.ClientConfigH\000\022\"\n\004mark\030\002 \001(\013" +
      "2\022.grpc.testing.MarkH\000B\t\n\007argtype\"\264\002\n\014Se" +
      "rverConfig\022-\n\013server_type\030\001 \001(\0162\030.grpc.t" +
      "esting.ServerType\0225\n\017security_params\030\002 \001" +
      "(\0132\034.grpc.testing.SecurityParams\022\014\n\004port" +
      "\030\004 \001(\005\022\034\n\024async_server_threads\030\007 \001(\005\022\022\n\n" +
      "core_limit\030\010 \001(\005\0223\n\016payload_config\030\t \001(\013" +
      "2\033.grpc.testing.PayloadConfig\022\021\n\tcore_li" +
      "st\030\n \003(\005\022\030\n\020other_server_api\030\013 \001(\t\022\034\n\023re" +
      "source_quota_size\030\351\007 \001(\005\"h\n\nServerArgs\022+" +
      "\n\005setup\030\001 \001(\0132\032.grpc.testing.ServerConfi" +
      "gH\000\022\"\n\004mark\030\002 \001(\0132\022.grpc.testing.MarkH\000B" +
      "\t\n\007argtype\"U\n\014ServerStatus\022(\n\005stats\030\001 \001(" +
      "\0132\031.grpc.testing.ServerStats\022\014\n\004port\030\002 \001" +
      "(\005\022\r\n\005cores\030\003 \001(\005\"\r\n\013CoreRequest\"\035\n\014Core" +
      "Response\022\r\n\005cores\030\001 \001(\005\"\006\n\004Void\"\375\001\n\010Scen" +
      "ario\022\014\n\004name\030\001 \001(\t\0221\n\rclient_config\030\002 \001(" +
      "\0132\032.grpc.testing.ClientConfig\022\023\n\013num_cli" +
      "ents\030\003 \001(\005\0221\n\rserver_config\030\004 \001(\0132\032.grpc" +
      ".testing.ServerConfig\022\023\n\013num_servers\030\005 \001" +
      "(\005\022\026\n\016warmup_seconds\030\006 \001(\005\022\031\n\021benchmark_" +
      "seconds\030\007 \001(\005\022 \n\030spawn_local_worker_coun" +
      "t\030\010 \001(\005\"6\n\tScenarios\022)\n\tscenarios\030\001 \003(\0132" +
      "\026.grpc.testing.Scenario\"\274\003\n\025ScenarioResu" +
      "ltSummary\022\013\n\003qps\030\001 \001(\001\022\033\n\023qps_per_server" +
      "_core\030\002 \001(\001\022\032\n\022server_system_time\030\003 \001(\001\022" +
      "\030\n\020server_user_time\030\004 \001(\001\022\032\n\022client_syst" +
      "em_time\030\005 \001(\001\022\030\n\020client_user_time\030\006 \001(\001\022" +
      "\022\n\nlatency_50\030\007 \001(\001\022\022\n\nlatency_90\030\010 \001(\001\022" +
      "\022\n\nlatency_95\030\t \001(\001\022\022\n\nlatency_99\030\n \001(\001\022" +
      "\023\n\013latency_999\030\013 \001(\001\022\030\n\020server_cpu_usage" +
      "\030\014 \001(\001\022&\n\036successful_requests_per_second" +
      "\030\r \001(\001\022\"\n\032failed_requests_per_second\030\016 \001" +
      "(\001\022 \n\030client_polls_per_request\030\017 \001(\001\022 \n\030" +
      "server_polls_per_request\030\020 \001(\001\"\203\003\n\016Scena" +
      "rioResult\022(\n\010scenario\030\001 \001(\0132\026.grpc.testi" +
      "ng.Scenario\022.\n\tlatencies\030\002 \001(\0132\033.grpc.te" +
      "sting.HistogramData\022/\n\014client_stats\030\003 \003(" +
      "\0132\031.grpc.testing.ClientStats\022/\n\014server_s" +
      "tats\030\004 \003(\0132\031.grpc.testing.ServerStats\022\024\n" +
      "\014server_cores\030\005 \003(\005\0224\n\007summary\030\006 \001(\0132#.g" +
      "rpc.testing.ScenarioResultSummary\022\026\n\016cli" +
      "ent_success\030\007 \003(\010\022\026\n\016server_success\030\010 \003(" +
      "\010\0229\n\017request_results\030\t \003(\0132 .grpc.testin" +
      "g.RequestResultCount*A\n\nClientType\022\017\n\013SY" +
      "NC_CLIENT\020\000\022\020\n\014ASYNC_CLIENT\020\001\022\020\n\014OTHER_C" +
      "LIENT\020\002*[\n\nServerType\022\017\n\013SYNC_SERVER\020\000\022\020" +
      "\n\014ASYNC_SERVER\020\001\022\030\n\024ASYNC_GENERIC_SERVER" +
      "\020\002\022\020\n\014OTHER_SERVER\020\003*r\n\007RpcType\022\t\n\005UNARY" +
      "\020\000\022\r\n\tSTREAMING\020\001\022\031\n\025STREAMING_FROM_CLIE" +
      "NT\020\002\022\031\n\025STREAMING_FROM_SERVER\020\003\022\027\n\023STREA" +
      "MING_BOTH_WAYS\020\004B#\n\030io.grpc.benchmarks.p" +
      "rotoB\007Controlb\006proto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          io.grpc.benchmarks.proto.Payloads.getDescriptor(),
          io.grpc.benchmarks.proto.Stats.getDescriptor(),
        }, assigner);
    internal_static_grpc_testing_PoissonParams_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_grpc_testing_PoissonParams_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_PoissonParams_descriptor,
        new java.lang.String[] { "OfferedLoad", });
    internal_static_grpc_testing_ClosedLoopParams_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_grpc_testing_ClosedLoopParams_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ClosedLoopParams_descriptor,
        new java.lang.String[] { });
    internal_static_grpc_testing_LoadParams_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_grpc_testing_LoadParams_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_LoadParams_descriptor,
        new java.lang.String[] { "ClosedLoop", "Poisson", "Load", });
    internal_static_grpc_testing_SecurityParams_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_grpc_testing_SecurityParams_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_SecurityParams_descriptor,
        new java.lang.String[] { "UseTestCa", "ServerHostOverride", });
    internal_static_grpc_testing_ChannelArg_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_grpc_testing_ChannelArg_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ChannelArg_descriptor,
        new java.lang.String[] { "Name", "StrValue", "IntValue", "Value", });
    internal_static_grpc_testing_ClientConfig_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_grpc_testing_ClientConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ClientConfig_descriptor,
        new java.lang.String[] { "ServerTargets", "ClientType", "SecurityParams", "OutstandingRpcsPerChannel", "ClientChannels", "AsyncClientThreads", "RpcType", "LoadParams", "PayloadConfig", "HistogramParams", "CoreList", "CoreLimit", "OtherClientApi", "ChannelArgs", "MessagesPerStream", });
    internal_static_grpc_testing_ClientStatus_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_grpc_testing_ClientStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ClientStatus_descriptor,
        new java.lang.String[] { "Stats", });
    internal_static_grpc_testing_Mark_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_grpc_testing_Mark_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_Mark_descriptor,
        new java.lang.String[] { "Reset", });
    internal_static_grpc_testing_ClientArgs_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_grpc_testing_ClientArgs_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ClientArgs_descriptor,
        new java.lang.String[] { "Setup", "Mark", "Argtype", });
    internal_static_grpc_testing_ServerConfig_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_grpc_testing_ServerConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ServerConfig_descriptor,
        new java.lang.String[] { "ServerType", "SecurityParams", "Port", "AsyncServerThreads", "CoreLimit", "PayloadConfig", "CoreList", "OtherServerApi", "ResourceQuotaSize", });
    internal_static_grpc_testing_ServerArgs_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_grpc_testing_ServerArgs_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ServerArgs_descriptor,
        new java.lang.String[] { "Setup", "Mark", "Argtype", });
    internal_static_grpc_testing_ServerStatus_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_grpc_testing_ServerStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ServerStatus_descriptor,
        new java.lang.String[] { "Stats", "Port", "Cores", });
    internal_static_grpc_testing_CoreRequest_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_grpc_testing_CoreRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_CoreRequest_descriptor,
        new java.lang.String[] { });
    internal_static_grpc_testing_CoreResponse_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_grpc_testing_CoreResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_CoreResponse_descriptor,
        new java.lang.String[] { "Cores", });
    internal_static_grpc_testing_Void_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_grpc_testing_Void_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_Void_descriptor,
        new java.lang.String[] { });
    internal_static_grpc_testing_Scenario_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_grpc_testing_Scenario_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_Scenario_descriptor,
        new java.lang.String[] { "Name", "ClientConfig", "NumClients", "ServerConfig", "NumServers", "WarmupSeconds", "BenchmarkSeconds", "SpawnLocalWorkerCount", });
    internal_static_grpc_testing_Scenarios_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_grpc_testing_Scenarios_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_Scenarios_descriptor,
        new java.lang.String[] { "Scenarios", });
    internal_static_grpc_testing_ScenarioResultSummary_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_grpc_testing_ScenarioResultSummary_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ScenarioResultSummary_descriptor,
        new java.lang.String[] { "Qps", "QpsPerServerCore", "ServerSystemTime", "ServerUserTime", "ClientSystemTime", "ClientUserTime", "Latency50", "Latency90", "Latency95", "Latency99", "Latency999", "ServerCpuUsage", "SuccessfulRequestsPerSecond", "FailedRequestsPerSecond", "ClientPollsPerRequest", "ServerPollsPerRequest", });
    internal_static_grpc_testing_ScenarioResult_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_grpc_testing_ScenarioResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_grpc_testing_ScenarioResult_descriptor,
        new java.lang.String[] { "Scenario", "Latencies", "ClientStats", "ServerStats", "ServerCores", "Summary", "ClientSuccess", "ServerSuccess", "RequestResults", });
    io.grpc.benchmarks.proto.Payloads.getDescriptor();
    io.grpc.benchmarks.proto.Stats.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
