Flight.java

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

// Protobuf Java Version: 3.25.4
package org.apache.arrow.flight.impl;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * <pre>
   *
   * The result of a cancel operation.
   *
   * This is used by CancelFlightInfoResult.status.
   * </pre>
   *
   * Protobuf enum {@code arrow.flight.protocol.CancelStatus}
   */
  public enum CancelStatus
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * The cancellation status is unknown. Servers should avoid using
     * this value (send a NOT_FOUND error if the requested query is
     * not known). Clients can retry the request.
     * </pre>
     *
     * <code>CANCEL_STATUS_UNSPECIFIED = 0;</code>
     */
    CANCEL_STATUS_UNSPECIFIED(0),
    /**
     * <pre>
     * The cancellation request is complete. Subsequent requests with
     * the same payload may return CANCELLED or a NOT_FOUND error.
     * </pre>
     *
     * <code>CANCEL_STATUS_CANCELLED = 1;</code>
     */
    CANCEL_STATUS_CANCELLED(1),
    /**
     * <pre>
     * The cancellation request is in progress. The client may retry
     * the cancellation request.
     * </pre>
     *
     * <code>CANCEL_STATUS_CANCELLING = 2;</code>
     */
    CANCEL_STATUS_CANCELLING(2),
    /**
     * <pre>
     * The query is not cancellable. The client should not retry the
     * cancellation request.
     * </pre>
     *
     * <code>CANCEL_STATUS_NOT_CANCELLABLE = 3;</code>
     */
    CANCEL_STATUS_NOT_CANCELLABLE(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * The cancellation status is unknown. Servers should avoid using
     * this value (send a NOT_FOUND error if the requested query is
     * not known). Clients can retry the request.
     * </pre>
     *
     * <code>CANCEL_STATUS_UNSPECIFIED = 0;</code>
     */
    public static final int CANCEL_STATUS_UNSPECIFIED_VALUE = 0;
    /**
     * <pre>
     * The cancellation request is complete. Subsequent requests with
     * the same payload may return CANCELLED or a NOT_FOUND error.
     * </pre>
     *
     * <code>CANCEL_STATUS_CANCELLED = 1;</code>
     */
    public static final int CANCEL_STATUS_CANCELLED_VALUE = 1;
    /**
     * <pre>
     * The cancellation request is in progress. The client may retry
     * the cancellation request.
     * </pre>
     *
     * <code>CANCEL_STATUS_CANCELLING = 2;</code>
     */
    public static final int CANCEL_STATUS_CANCELLING_VALUE = 2;
    /**
     * <pre>
     * The query is not cancellable. The client should not retry the
     * cancellation request.
     * </pre>
     *
     * <code>CANCEL_STATUS_NOT_CANCELLABLE = 3;</code>
     */
    public static final int CANCEL_STATUS_NOT_CANCELLABLE_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;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static CancelStatus valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static CancelStatus forNumber(int value) {
      switch (value) {
        case 0: return CANCEL_STATUS_UNSPECIFIED;
        case 1: return CANCEL_STATUS_CANCELLED;
        case 2: return CANCEL_STATUS_CANCELLING;
        case 3: return CANCEL_STATUS_NOT_CANCELLABLE;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      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 org.apache.arrow.flight.impl.Flight.getDescriptor().getEnumTypes().get(0);
    }

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

    public static CancelStatus 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 CancelStatus(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.CancelStatus)
  }

  public interface HandshakeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.HandshakeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * A defined protocol version
     * </pre>
     *
     * <code>uint64 protocol_version = 1;</code>
     * @return The protocolVersion.
     */
    long getProtocolVersion();

    /**
     * <pre>
     *
     * Arbitrary auth/handshake info.
     * </pre>
     *
     * <code>bytes payload = 2;</code>
     * @return The payload.
     */
    com.google.protobuf.ByteString getPayload();
  }
  /**
   * <pre>
   *
   * The request that a client provides to a server on handshake.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.HandshakeRequest}
   */
  public static final class HandshakeRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.HandshakeRequest)
      HandshakeRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandshakeRequest.newBuilder() to construct.
    private HandshakeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandshakeRequest() {
      payload_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HandshakeRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.HandshakeRequest.class, org.apache.arrow.flight.impl.Flight.HandshakeRequest.Builder.class);
    }

    public static final int PROTOCOL_VERSION_FIELD_NUMBER = 1;
    private long protocolVersion_ = 0L;
    /**
     * <pre>
     *
     * A defined protocol version
     * </pre>
     *
     * <code>uint64 protocol_version = 1;</code>
     * @return The protocolVersion.
     */
    @java.lang.Override
    public long getProtocolVersion() {
      return protocolVersion_;
    }

    public static final int PAYLOAD_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString payload_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     *
     * Arbitrary auth/handshake info.
     * </pre>
     *
     * <code>bytes payload = 2;</code>
     * @return The payload.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPayload() {
      return payload_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (protocolVersion_ != 0L) {
        output.writeUInt64(1, protocolVersion_);
      }
      if (!payload_.isEmpty()) {
        output.writeBytes(2, payload_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (protocolVersion_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, protocolVersion_);
      }
      if (!payload_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, payload_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.HandshakeRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.HandshakeRequest other = (org.apache.arrow.flight.impl.Flight.HandshakeRequest) obj;

      if (getProtocolVersion()
          != other.getProtocolVersion()) return false;
      if (!getPayload()
          .equals(other.getPayload())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PROTOCOL_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProtocolVersion());
      hash = (37 * hash) + PAYLOAD_FIELD_NUMBER;
      hash = (53 * hash) + getPayload().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest 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 org.apache.arrow.flight.impl.Flight.HandshakeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest 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 org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.HandshakeRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * The request that a client provides to a server on handshake.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.HandshakeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.HandshakeRequest)
        org.apache.arrow.flight.impl.Flight.HandshakeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.HandshakeRequest.class, org.apache.arrow.flight.impl.Flight.HandshakeRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.HandshakeRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        protocolVersion_ = 0L;
        payload_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.HandshakeRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.HandshakeRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.HandshakeRequest build() {
        org.apache.arrow.flight.impl.Flight.HandshakeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.HandshakeRequest buildPartial() {
        org.apache.arrow.flight.impl.Flight.HandshakeRequest result = new org.apache.arrow.flight.impl.Flight.HandshakeRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.HandshakeRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.protocolVersion_ = protocolVersion_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.payload_ = payload_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.HandshakeRequest) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.HandshakeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.HandshakeRequest other) {
        if (other == org.apache.arrow.flight.impl.Flight.HandshakeRequest.getDefaultInstance()) return this;
        if (other.getProtocolVersion() != 0L) {
          setProtocolVersion(other.getProtocolVersion());
        }
        if (other.getPayload() != com.google.protobuf.ByteString.EMPTY) {
          setPayload(other.getPayload());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                protocolVersion_ = input.readUInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                payload_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long protocolVersion_ ;
      /**
       * <pre>
       *
       * A defined protocol version
       * </pre>
       *
       * <code>uint64 protocol_version = 1;</code>
       * @return The protocolVersion.
       */
      @java.lang.Override
      public long getProtocolVersion() {
        return protocolVersion_;
      }
      /**
       * <pre>
       *
       * A defined protocol version
       * </pre>
       *
       * <code>uint64 protocol_version = 1;</code>
       * @param value The protocolVersion to set.
       * @return This builder for chaining.
       */
      public Builder setProtocolVersion(long value) {

        protocolVersion_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * A defined protocol version
       * </pre>
       *
       * <code>uint64 protocol_version = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtocolVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        protocolVersion_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString payload_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *
       * Arbitrary auth/handshake info.
       * </pre>
       *
       * <code>bytes payload = 2;</code>
       * @return The payload.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPayload() {
        return payload_;
      }
      /**
       * <pre>
       *
       * Arbitrary auth/handshake info.
       * </pre>
       *
       * <code>bytes payload = 2;</code>
       * @param value The payload to set.
       * @return This builder for chaining.
       */
      public Builder setPayload(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        payload_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Arbitrary auth/handshake info.
       * </pre>
       *
       * <code>bytes payload = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPayload() {
        bitField0_ = (bitField0_ & ~0x00000002);
        payload_ = getDefaultInstance().getPayload();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.HandshakeRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.HandshakeRequest)
    private static final org.apache.arrow.flight.impl.Flight.HandshakeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.HandshakeRequest();
    }

    public static org.apache.arrow.flight.impl.Flight.HandshakeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HandshakeRequest>
        PARSER = new com.google.protobuf.AbstractParser<HandshakeRequest>() {
      @java.lang.Override
      public HandshakeRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.HandshakeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandshakeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.HandshakeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * A defined protocol version
     * </pre>
     *
     * <code>uint64 protocol_version = 1;</code>
     * @return The protocolVersion.
     */
    long getProtocolVersion();

    /**
     * <pre>
     *
     * Arbitrary auth/handshake info.
     * </pre>
     *
     * <code>bytes payload = 2;</code>
     * @return The payload.
     */
    com.google.protobuf.ByteString getPayload();
  }
  /**
   * Protobuf type {@code arrow.flight.protocol.HandshakeResponse}
   */
  public static final class HandshakeResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.HandshakeResponse)
      HandshakeResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandshakeResponse.newBuilder() to construct.
    private HandshakeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandshakeResponse() {
      payload_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HandshakeResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.HandshakeResponse.class, org.apache.arrow.flight.impl.Flight.HandshakeResponse.Builder.class);
    }

    public static final int PROTOCOL_VERSION_FIELD_NUMBER = 1;
    private long protocolVersion_ = 0L;
    /**
     * <pre>
     *
     * A defined protocol version
     * </pre>
     *
     * <code>uint64 protocol_version = 1;</code>
     * @return The protocolVersion.
     */
    @java.lang.Override
    public long getProtocolVersion() {
      return protocolVersion_;
    }

    public static final int PAYLOAD_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString payload_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     *
     * Arbitrary auth/handshake info.
     * </pre>
     *
     * <code>bytes payload = 2;</code>
     * @return The payload.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPayload() {
      return payload_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (protocolVersion_ != 0L) {
        output.writeUInt64(1, protocolVersion_);
      }
      if (!payload_.isEmpty()) {
        output.writeBytes(2, payload_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (protocolVersion_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, protocolVersion_);
      }
      if (!payload_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, payload_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.HandshakeResponse)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.HandshakeResponse other = (org.apache.arrow.flight.impl.Flight.HandshakeResponse) obj;

      if (getProtocolVersion()
          != other.getProtocolVersion()) return false;
      if (!getPayload()
          .equals(other.getPayload())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PROTOCOL_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProtocolVersion());
      hash = (37 * hash) + PAYLOAD_FIELD_NUMBER;
      hash = (53 * hash) + getPayload().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse 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 org.apache.arrow.flight.impl.Flight.HandshakeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse 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 org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.HandshakeResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 arrow.flight.protocol.HandshakeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.HandshakeResponse)
        org.apache.arrow.flight.impl.Flight.HandshakeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.HandshakeResponse.class, org.apache.arrow.flight.impl.Flight.HandshakeResponse.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.HandshakeResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        protocolVersion_ = 0L;
        payload_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_HandshakeResponse_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.HandshakeResponse getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.HandshakeResponse.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.HandshakeResponse build() {
        org.apache.arrow.flight.impl.Flight.HandshakeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.HandshakeResponse buildPartial() {
        org.apache.arrow.flight.impl.Flight.HandshakeResponse result = new org.apache.arrow.flight.impl.Flight.HandshakeResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.HandshakeResponse result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.protocolVersion_ = protocolVersion_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.payload_ = payload_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.HandshakeResponse) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.HandshakeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.HandshakeResponse other) {
        if (other == org.apache.arrow.flight.impl.Flight.HandshakeResponse.getDefaultInstance()) return this;
        if (other.getProtocolVersion() != 0L) {
          setProtocolVersion(other.getProtocolVersion());
        }
        if (other.getPayload() != com.google.protobuf.ByteString.EMPTY) {
          setPayload(other.getPayload());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                protocolVersion_ = input.readUInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                payload_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long protocolVersion_ ;
      /**
       * <pre>
       *
       * A defined protocol version
       * </pre>
       *
       * <code>uint64 protocol_version = 1;</code>
       * @return The protocolVersion.
       */
      @java.lang.Override
      public long getProtocolVersion() {
        return protocolVersion_;
      }
      /**
       * <pre>
       *
       * A defined protocol version
       * </pre>
       *
       * <code>uint64 protocol_version = 1;</code>
       * @param value The protocolVersion to set.
       * @return This builder for chaining.
       */
      public Builder setProtocolVersion(long value) {

        protocolVersion_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * A defined protocol version
       * </pre>
       *
       * <code>uint64 protocol_version = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearProtocolVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        protocolVersion_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString payload_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *
       * Arbitrary auth/handshake info.
       * </pre>
       *
       * <code>bytes payload = 2;</code>
       * @return The payload.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPayload() {
        return payload_;
      }
      /**
       * <pre>
       *
       * Arbitrary auth/handshake info.
       * </pre>
       *
       * <code>bytes payload = 2;</code>
       * @param value The payload to set.
       * @return This builder for chaining.
       */
      public Builder setPayload(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        payload_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Arbitrary auth/handshake info.
       * </pre>
       *
       * <code>bytes payload = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPayload() {
        bitField0_ = (bitField0_ & ~0x00000002);
        payload_ = getDefaultInstance().getPayload();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.HandshakeResponse)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.HandshakeResponse)
    private static final org.apache.arrow.flight.impl.Flight.HandshakeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.HandshakeResponse();
    }

    public static org.apache.arrow.flight.impl.Flight.HandshakeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<HandshakeResponse>
        PARSER = new com.google.protobuf.AbstractParser<HandshakeResponse>() {
      @java.lang.Override
      public HandshakeResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.HandshakeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BasicAuthOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.BasicAuth)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string username = 2;</code>
     * @return The username.
     */
    java.lang.String getUsername();
    /**
     * <code>string username = 2;</code>
     * @return The bytes for username.
     */
    com.google.protobuf.ByteString
        getUsernameBytes();

    /**
     * <code>string password = 3;</code>
     * @return The password.
     */
    java.lang.String getPassword();
    /**
     * <code>string password = 3;</code>
     * @return The bytes for password.
     */
    com.google.protobuf.ByteString
        getPasswordBytes();
  }
  /**
   * <pre>
   *
   * A message for doing simple auth.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.BasicAuth}
   */
  public static final class BasicAuth extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.BasicAuth)
      BasicAuthOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BasicAuth.newBuilder() to construct.
    private BasicAuth(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BasicAuth() {
      username_ = "";
      password_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BasicAuth();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_BasicAuth_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_BasicAuth_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.BasicAuth.class, org.apache.arrow.flight.impl.Flight.BasicAuth.Builder.class);
    }

    public static final int USERNAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object username_ = "";
    /**
     * <code>string username = 2;</code>
     * @return The username.
     */
    @java.lang.Override
    public java.lang.String getUsername() {
      java.lang.Object ref = username_;
      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();
        username_ = s;
        return s;
      }
    }
    /**
     * <code>string username = 2;</code>
     * @return The bytes for username.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUsernameBytes() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        username_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PASSWORD_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object password_ = "";
    /**
     * <code>string password = 3;</code>
     * @return The password.
     */
    @java.lang.Override
    public java.lang.String getPassword() {
      java.lang.Object ref = password_;
      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();
        password_ = s;
        return s;
      }
    }
    /**
     * <code>string password = 3;</code>
     * @return The bytes for password.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPasswordBytes() {
      java.lang.Object ref = password_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        password_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(username_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, username_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(password_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, password_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(username_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, username_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(password_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, password_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.BasicAuth)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.BasicAuth other = (org.apache.arrow.flight.impl.Flight.BasicAuth) obj;

      if (!getUsername()
          .equals(other.getUsername())) return false;
      if (!getPassword()
          .equals(other.getPassword())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + USERNAME_FIELD_NUMBER;
      hash = (53 * hash) + getUsername().hashCode();
      hash = (37 * hash) + PASSWORD_FIELD_NUMBER;
      hash = (53 * hash) + getPassword().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.BasicAuth 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 org.apache.arrow.flight.impl.Flight.BasicAuth parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.BasicAuth 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 org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.BasicAuth parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.BasicAuth prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 message for doing simple auth.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.BasicAuth}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.BasicAuth)
        org.apache.arrow.flight.impl.Flight.BasicAuthOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_BasicAuth_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_BasicAuth_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.BasicAuth.class, org.apache.arrow.flight.impl.Flight.BasicAuth.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.BasicAuth.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        username_ = "";
        password_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_BasicAuth_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.BasicAuth getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.BasicAuth.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.BasicAuth build() {
        org.apache.arrow.flight.impl.Flight.BasicAuth result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.BasicAuth buildPartial() {
        org.apache.arrow.flight.impl.Flight.BasicAuth result = new org.apache.arrow.flight.impl.Flight.BasicAuth(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.BasicAuth result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.username_ = username_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.password_ = password_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.BasicAuth) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.BasicAuth)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.BasicAuth other) {
        if (other == org.apache.arrow.flight.impl.Flight.BasicAuth.getDefaultInstance()) return this;
        if (!other.getUsername().isEmpty()) {
          username_ = other.username_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getPassword().isEmpty()) {
          password_ = other.password_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 18: {
                username_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 18
              case 26: {
                password_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object username_ = "";
      /**
       * <code>string username = 2;</code>
       * @return The username.
       */
      public java.lang.String getUsername() {
        java.lang.Object ref = username_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          username_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string username = 2;</code>
       * @return The bytes for username.
       */
      public com.google.protobuf.ByteString
          getUsernameBytes() {
        java.lang.Object ref = username_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          username_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string username = 2;</code>
       * @param value The username to set.
       * @return This builder for chaining.
       */
      public Builder setUsername(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        username_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string username = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUsername() {
        username_ = getDefaultInstance().getUsername();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string username = 2;</code>
       * @param value The bytes for username to set.
       * @return This builder for chaining.
       */
      public Builder setUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        username_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object password_ = "";
      /**
       * <code>string password = 3;</code>
       * @return The password.
       */
      public java.lang.String getPassword() {
        java.lang.Object ref = password_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          password_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string password = 3;</code>
       * @return The bytes for password.
       */
      public com.google.protobuf.ByteString
          getPasswordBytes() {
        java.lang.Object ref = password_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          password_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string password = 3;</code>
       * @param value The password to set.
       * @return This builder for chaining.
       */
      public Builder setPassword(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        password_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string password = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPassword() {
        password_ = getDefaultInstance().getPassword();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string password = 3;</code>
       * @param value The bytes for password to set.
       * @return This builder for chaining.
       */
      public Builder setPasswordBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        password_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.BasicAuth)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.BasicAuth)
    private static final org.apache.arrow.flight.impl.Flight.BasicAuth DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.BasicAuth();
    }

    public static org.apache.arrow.flight.impl.Flight.BasicAuth getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BasicAuth>
        PARSER = new com.google.protobuf.AbstractParser<BasicAuth>() {
      @java.lang.Override
      public BasicAuth parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.BasicAuth getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Empty();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Empty_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Empty_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.Empty.class, org.apache.arrow.flight.impl.Flight.Empty.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.Empty)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.Empty other = (org.apache.arrow.flight.impl.Flight.Empty) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.Empty parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Empty parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Empty parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Empty parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Empty parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Empty parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Empty parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Empty 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 org.apache.arrow.flight.impl.Flight.Empty parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.Empty 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 org.apache.arrow.flight.impl.Flight.Empty parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Empty parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.Empty prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 arrow.flight.protocol.Empty}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.Empty)
        org.apache.arrow.flight.impl.Flight.EmptyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Empty_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Empty_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.Empty.class, org.apache.arrow.flight.impl.Flight.Empty.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.Empty.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Empty_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Empty getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.Empty.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Empty build() {
        org.apache.arrow.flight.impl.Flight.Empty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Empty buildPartial() {
        org.apache.arrow.flight.impl.Flight.Empty result = new org.apache.arrow.flight.impl.Flight.Empty(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.Empty) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.Empty)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.Empty other) {
        if (other == org.apache.arrow.flight.impl.Flight.Empty.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.Empty)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.Empty)
    private static final org.apache.arrow.flight.impl.Flight.Empty DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.Empty();
    }

    public static org.apache.arrow.flight.impl.Flight.Empty getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Empty>
        PARSER = new com.google.protobuf.AbstractParser<Empty>() {
      @java.lang.Override
      public Empty parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.Empty getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionTypeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.ActionType)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <code>string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <code>string description = 2;</code>
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * <code>string description = 2;</code>
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();
  }
  /**
   * <pre>
   *
   * Describes an available action, including both the name used for execution
   * along with a short description of the purpose of the action.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.ActionType}
   */
  public static final class ActionType extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.ActionType)
      ActionTypeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionType.newBuilder() to construct.
    private ActionType(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionType() {
      type_ = "";
      description_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActionType();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_ActionType_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_ActionType_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.ActionType.class, org.apache.arrow.flight.impl.Flight.ActionType.Builder.class);
    }

    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <code>string type = 1;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      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();
        type_ = s;
        return s;
      }
    }
    /**
     * <code>string type = 1;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * <code>string description = 2;</code>
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      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();
        description_ = s;
        return s;
      }
    }
    /**
     * <code>string description = 2;</code>
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, type_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, type_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.ActionType)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.ActionType other = (org.apache.arrow.flight.impl.Flight.ActionType) obj;

      if (!getType()
          .equals(other.getType())) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.ActionType parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.ActionType parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.ActionType parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.ActionType parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.ActionType parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.ActionType parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.ActionType parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.ActionType 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 org.apache.arrow.flight.impl.Flight.ActionType parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.ActionType 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 org.apache.arrow.flight.impl.Flight.ActionType parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.ActionType parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.ActionType prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * Describes an available action, including both the name used for execution
     * along with a short description of the purpose of the action.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.ActionType}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.ActionType)
        org.apache.arrow.flight.impl.Flight.ActionTypeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_ActionType_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_ActionType_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.ActionType.class, org.apache.arrow.flight.impl.Flight.ActionType.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.ActionType.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        description_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_ActionType_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.ActionType getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.ActionType.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.ActionType build() {
        org.apache.arrow.flight.impl.Flight.ActionType result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.ActionType buildPartial() {
        org.apache.arrow.flight.impl.Flight.ActionType result = new org.apache.arrow.flight.impl.Flight.ActionType(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.ActionType result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = type_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.description_ = description_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.ActionType) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.ActionType)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.ActionType other) {
        if (other == org.apache.arrow.flight.impl.Flight.ActionType.getDefaultInstance()) return this;
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                type_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                description_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object type_ = "";
      /**
       * <code>string type = 1;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          type_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string type = 1;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string type = 1;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string type = 1;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        type_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * <code>string description = 2;</code>
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string description = 2;</code>
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string description = 2;</code>
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string description = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string description = 2;</code>
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        description_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.ActionType)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.ActionType)
    private static final org.apache.arrow.flight.impl.Flight.ActionType DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.ActionType();
    }

    public static org.apache.arrow.flight.impl.Flight.ActionType getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActionType>
        PARSER = new com.google.protobuf.AbstractParser<ActionType>() {
      @java.lang.Override
      public ActionType parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.ActionType getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CriteriaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.Criteria)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bytes expression = 1;</code>
     * @return The expression.
     */
    com.google.protobuf.ByteString getExpression();
  }
  /**
   * <pre>
   *
   * A service specific expression that can be used to return a limited set
   * of available Arrow Flight streams.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.Criteria}
   */
  public static final class Criteria extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.Criteria)
      CriteriaOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Criteria.newBuilder() to construct.
    private Criteria(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Criteria() {
      expression_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Criteria();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Criteria_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Criteria_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.Criteria.class, org.apache.arrow.flight.impl.Flight.Criteria.Builder.class);
    }

    public static final int EXPRESSION_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString expression_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>bytes expression = 1;</code>
     * @return The expression.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getExpression() {
      return expression_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!expression_.isEmpty()) {
        output.writeBytes(1, expression_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!expression_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, expression_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.Criteria)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.Criteria other = (org.apache.arrow.flight.impl.Flight.Criteria) obj;

      if (!getExpression()
          .equals(other.getExpression())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.Criteria parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Criteria parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Criteria parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Criteria parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Criteria parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Criteria parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Criteria parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Criteria 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 org.apache.arrow.flight.impl.Flight.Criteria parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.Criteria 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 org.apache.arrow.flight.impl.Flight.Criteria parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Criteria parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.Criteria prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 service specific expression that can be used to return a limited set
     * of available Arrow Flight streams.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.Criteria}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.Criteria)
        org.apache.arrow.flight.impl.Flight.CriteriaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Criteria_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Criteria_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.Criteria.class, org.apache.arrow.flight.impl.Flight.Criteria.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.Criteria.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        expression_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Criteria_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Criteria getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.Criteria.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Criteria build() {
        org.apache.arrow.flight.impl.Flight.Criteria result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Criteria buildPartial() {
        org.apache.arrow.flight.impl.Flight.Criteria result = new org.apache.arrow.flight.impl.Flight.Criteria(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.Criteria result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.expression_ = expression_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.Criteria) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.Criteria)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.Criteria other) {
        if (other == org.apache.arrow.flight.impl.Flight.Criteria.getDefaultInstance()) return this;
        if (other.getExpression() != com.google.protobuf.ByteString.EMPTY) {
          setExpression(other.getExpression());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                expression_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString expression_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes expression = 1;</code>
       * @return The expression.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getExpression() {
        return expression_;
      }
      /**
       * <code>bytes expression = 1;</code>
       * @param value The expression to set.
       * @return This builder for chaining.
       */
      public Builder setExpression(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        expression_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bytes expression = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearExpression() {
        bitField0_ = (bitField0_ & ~0x00000001);
        expression_ = getDefaultInstance().getExpression();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.Criteria)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.Criteria)
    private static final org.apache.arrow.flight.impl.Flight.Criteria DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.Criteria();
    }

    public static org.apache.arrow.flight.impl.Flight.Criteria getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Criteria>
        PARSER = new com.google.protobuf.AbstractParser<Criteria>() {
      @java.lang.Override
      public Criteria parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.Criteria getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.Action)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <code>string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <code>bytes body = 2;</code>
     * @return The body.
     */
    com.google.protobuf.ByteString getBody();
  }
  /**
   * <pre>
   *
   * An opaque action specific for the service.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.Action}
   */
  public static final class Action extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.Action)
      ActionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Action.newBuilder() to construct.
    private Action(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Action() {
      type_ = "";
      body_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Action();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Action_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Action_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.Action.class, org.apache.arrow.flight.impl.Flight.Action.Builder.class);
    }

    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <code>string type = 1;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      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();
        type_ = s;
        return s;
      }
    }
    /**
     * <code>string type = 1;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BODY_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString body_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>bytes body = 2;</code>
     * @return The body.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getBody() {
      return body_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, type_);
      }
      if (!body_.isEmpty()) {
        output.writeBytes(2, body_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, type_);
      }
      if (!body_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, body_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.Action)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.Action other = (org.apache.arrow.flight.impl.Flight.Action) obj;

      if (!getType()
          .equals(other.getType())) return false;
      if (!getBody()
          .equals(other.getBody())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType().hashCode();
      hash = (37 * hash) + BODY_FIELD_NUMBER;
      hash = (53 * hash) + getBody().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.Action parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Action parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Action parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Action parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Action parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Action parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Action parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Action 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 org.apache.arrow.flight.impl.Flight.Action parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.Action 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 org.apache.arrow.flight.impl.Flight.Action parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Action parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.Action prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * An opaque action specific for the service.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.Action}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.Action)
        org.apache.arrow.flight.impl.Flight.ActionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Action_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Action_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.Action.class, org.apache.arrow.flight.impl.Flight.Action.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.Action.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        body_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Action_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Action getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.Action.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Action build() {
        org.apache.arrow.flight.impl.Flight.Action result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Action buildPartial() {
        org.apache.arrow.flight.impl.Flight.Action result = new org.apache.arrow.flight.impl.Flight.Action(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.Action result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = type_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.body_ = body_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.Action) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.Action)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.Action other) {
        if (other == org.apache.arrow.flight.impl.Flight.Action.getDefaultInstance()) return this;
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.getBody() != com.google.protobuf.ByteString.EMPTY) {
          setBody(other.getBody());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                type_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                body_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object type_ = "";
      /**
       * <code>string type = 1;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          type_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string type = 1;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string type = 1;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string type = 1;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        type_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString body_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes body = 2;</code>
       * @return The body.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getBody() {
        return body_;
      }
      /**
       * <code>bytes body = 2;</code>
       * @param value The body to set.
       * @return This builder for chaining.
       */
      public Builder setBody(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        body_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>bytes body = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBody() {
        bitField0_ = (bitField0_ & ~0x00000002);
        body_ = getDefaultInstance().getBody();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.Action)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.Action)
    private static final org.apache.arrow.flight.impl.Flight.Action DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.Action();
    }

    public static org.apache.arrow.flight.impl.Flight.Action getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Action>
        PARSER = new com.google.protobuf.AbstractParser<Action>() {
      @java.lang.Override
      public Action parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.Action getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.Result)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bytes body = 1;</code>
     * @return The body.
     */
    com.google.protobuf.ByteString getBody();
  }
  /**
   * <pre>
   *
   * An opaque result returned after executing an action.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.Result}
   */
  public static final class Result extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.Result)
      ResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Result.newBuilder() to construct.
    private Result(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Result() {
      body_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Result();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Result_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Result_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.Result.class, org.apache.arrow.flight.impl.Flight.Result.Builder.class);
    }

    public static final int BODY_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString body_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>bytes body = 1;</code>
     * @return The body.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getBody() {
      return body_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!body_.isEmpty()) {
        output.writeBytes(1, body_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!body_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, body_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.Result)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.Result other = (org.apache.arrow.flight.impl.Flight.Result) obj;

      if (!getBody()
          .equals(other.getBody())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.Result parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Result parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Result parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Result parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Result parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Result parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Result parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Result 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 org.apache.arrow.flight.impl.Flight.Result parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.Result 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 org.apache.arrow.flight.impl.Flight.Result parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Result parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.Result prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * An opaque result returned after executing an action.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.Result}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.Result)
        org.apache.arrow.flight.impl.Flight.ResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Result_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Result_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.Result.class, org.apache.arrow.flight.impl.Flight.Result.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.Result.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        body_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Result_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Result getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.Result.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Result build() {
        org.apache.arrow.flight.impl.Flight.Result result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Result buildPartial() {
        org.apache.arrow.flight.impl.Flight.Result result = new org.apache.arrow.flight.impl.Flight.Result(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.Result result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.body_ = body_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.Result) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.Result)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.Result other) {
        if (other == org.apache.arrow.flight.impl.Flight.Result.getDefaultInstance()) return this;
        if (other.getBody() != com.google.protobuf.ByteString.EMPTY) {
          setBody(other.getBody());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                body_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString body_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes body = 1;</code>
       * @return The body.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getBody() {
        return body_;
      }
      /**
       * <code>bytes body = 1;</code>
       * @param value The body to set.
       * @return This builder for chaining.
       */
      public Builder setBody(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        body_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bytes body = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBody() {
        bitField0_ = (bitField0_ & ~0x00000001);
        body_ = getDefaultInstance().getBody();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.Result)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.Result)
    private static final org.apache.arrow.flight.impl.Flight.Result DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.Result();
    }

    public static org.apache.arrow.flight.impl.Flight.Result getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Result>
        PARSER = new com.google.protobuf.AbstractParser<Result>() {
      @java.lang.Override
      public Result parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.Result getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SchemaResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.SchemaResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The schema of the dataset in its IPC form:
     *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
     *   4 bytes - the byte length of the payload
     *   a flatbuffer Message whose header is the Schema
     * </pre>
     *
     * <code>bytes schema = 1;</code>
     * @return The schema.
     */
    com.google.protobuf.ByteString getSchema();
  }
  /**
   * <pre>
   *
   * Wrap the result of a getSchema call
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.SchemaResult}
   */
  public static final class SchemaResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.SchemaResult)
      SchemaResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SchemaResult.newBuilder() to construct.
    private SchemaResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SchemaResult() {
      schema_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SchemaResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SchemaResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SchemaResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.SchemaResult.class, org.apache.arrow.flight.impl.Flight.SchemaResult.Builder.class);
    }

    public static final int SCHEMA_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString schema_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * The schema of the dataset in its IPC form:
     *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
     *   4 bytes - the byte length of the payload
     *   a flatbuffer Message whose header is the Schema
     * </pre>
     *
     * <code>bytes schema = 1;</code>
     * @return The schema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getSchema() {
      return schema_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!schema_.isEmpty()) {
        output.writeBytes(1, schema_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!schema_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, schema_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.SchemaResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.SchemaResult other = (org.apache.arrow.flight.impl.Flight.SchemaResult) obj;

      if (!getSchema()
          .equals(other.getSchema())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.SchemaResult 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 org.apache.arrow.flight.impl.Flight.SchemaResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.SchemaResult 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 org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.SchemaResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.SchemaResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * Wrap the result of a getSchema call
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.SchemaResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.SchemaResult)
        org.apache.arrow.flight.impl.Flight.SchemaResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SchemaResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SchemaResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.SchemaResult.class, org.apache.arrow.flight.impl.Flight.SchemaResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.SchemaResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        schema_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SchemaResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SchemaResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.SchemaResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SchemaResult build() {
        org.apache.arrow.flight.impl.Flight.SchemaResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SchemaResult buildPartial() {
        org.apache.arrow.flight.impl.Flight.SchemaResult result = new org.apache.arrow.flight.impl.Flight.SchemaResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.SchemaResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.schema_ = schema_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.SchemaResult) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.SchemaResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.SchemaResult other) {
        if (other == org.apache.arrow.flight.impl.Flight.SchemaResult.getDefaultInstance()) return this;
        if (other.getSchema() != com.google.protobuf.ByteString.EMPTY) {
          setSchema(other.getSchema());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                schema_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString schema_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * The schema of the dataset in its IPC form:
       *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
       *   4 bytes - the byte length of the payload
       *   a flatbuffer Message whose header is the Schema
       * </pre>
       *
       * <code>bytes schema = 1;</code>
       * @return The schema.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getSchema() {
        return schema_;
      }
      /**
       * <pre>
       * The schema of the dataset in its IPC form:
       *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
       *   4 bytes - the byte length of the payload
       *   a flatbuffer Message whose header is the Schema
       * </pre>
       *
       * <code>bytes schema = 1;</code>
       * @param value The schema to set.
       * @return This builder for chaining.
       */
      public Builder setSchema(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        schema_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The schema of the dataset in its IPC form:
       *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
       *   4 bytes - the byte length of the payload
       *   a flatbuffer Message whose header is the Schema
       * </pre>
       *
       * <code>bytes schema = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSchema() {
        bitField0_ = (bitField0_ & ~0x00000001);
        schema_ = getDefaultInstance().getSchema();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.SchemaResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.SchemaResult)
    private static final org.apache.arrow.flight.impl.Flight.SchemaResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.SchemaResult();
    }

    public static org.apache.arrow.flight.impl.Flight.SchemaResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SchemaResult>
        PARSER = new com.google.protobuf.AbstractParser<SchemaResult>() {
      @java.lang.Override
      public SchemaResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SchemaResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlightDescriptorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.FlightDescriptor)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
     * @return The enum numeric value on the wire for type.
     */
    int getTypeValue();
    /**
     * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
     * @return The type.
     */
    org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType getType();

    /**
     * <pre>
     *
     * Opaque value used to express a command. Should only be defined when
     * type = CMD.
     * </pre>
     *
     * <code>bytes cmd = 2;</code>
     * @return The cmd.
     */
    com.google.protobuf.ByteString getCmd();

    /**
     * <pre>
     *
     * List of strings identifying a particular dataset. Should only be defined
     * when type = PATH.
     * </pre>
     *
     * <code>repeated string path = 3;</code>
     * @return A list containing the path.
     */
    java.util.List<java.lang.String>
        getPathList();
    /**
     * <pre>
     *
     * List of strings identifying a particular dataset. Should only be defined
     * when type = PATH.
     * </pre>
     *
     * <code>repeated string path = 3;</code>
     * @return The count of path.
     */
    int getPathCount();
    /**
     * <pre>
     *
     * List of strings identifying a particular dataset. Should only be defined
     * when type = PATH.
     * </pre>
     *
     * <code>repeated string path = 3;</code>
     * @param index The index of the element to return.
     * @return The path at the given index.
     */
    java.lang.String getPath(int index);
    /**
     * <pre>
     *
     * List of strings identifying a particular dataset. Should only be defined
     * when type = PATH.
     * </pre>
     *
     * <code>repeated string path = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the path at the given index.
     */
    com.google.protobuf.ByteString
        getPathBytes(int index);
  }
  /**
   * <pre>
   *
   * The name or tag for a Flight. May be used as a way to retrieve or generate
   * a flight or be used to expose a set of previously defined flights.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.FlightDescriptor}
   */
  public static final class FlightDescriptor extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.FlightDescriptor)
      FlightDescriptorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FlightDescriptor.newBuilder() to construct.
    private FlightDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FlightDescriptor() {
      type_ = 0;
      cmd_ = com.google.protobuf.ByteString.EMPTY;
      path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FlightDescriptor();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightDescriptor_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightDescriptor_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.FlightDescriptor.class, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder.class);
    }

    /**
     * <pre>
     *
     * Describes what type of descriptor is defined.
     * </pre>
     *
     * Protobuf enum {@code arrow.flight.protocol.FlightDescriptor.DescriptorType}
     */
    public enum DescriptorType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Protobuf pattern, not used.
       * </pre>
       *
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <pre>
       *
       * A named path that identifies a dataset. A path is composed of a string
       * or list of strings describing a particular dataset. This is conceptually
       *  similar to a path inside a filesystem.
       * </pre>
       *
       * <code>PATH = 1;</code>
       */
      PATH(1),
      /**
       * <pre>
       *
       * An opaque command to generate a dataset.
       * </pre>
       *
       * <code>CMD = 2;</code>
       */
      CMD(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Protobuf pattern, not used.
       * </pre>
       *
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <pre>
       *
       * A named path that identifies a dataset. A path is composed of a string
       * or list of strings describing a particular dataset. This is conceptually
       *  similar to a path inside a filesystem.
       * </pre>
       *
       * <code>PATH = 1;</code>
       */
      public static final int PATH_VALUE = 1;
      /**
       * <pre>
       *
       * An opaque command to generate a dataset.
       * </pre>
       *
       * <code>CMD = 2;</code>
       */
      public static final int CMD_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;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static DescriptorType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static DescriptorType forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 1: return PATH;
          case 2: return CMD;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        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 org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDescriptor().getEnumTypes().get(0);
      }

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

      public static DescriptorType 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 DescriptorType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.FlightDescriptor.DescriptorType)
    }

    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_ = 0;
    /**
     * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
     * @return The enum numeric value on the wire for type.
     */
    @java.lang.Override public int getTypeValue() {
      return type_;
    }
    /**
     * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
     * @return The type.
     */
    @java.lang.Override public org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType getType() {
      org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType result = org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType.forNumber(type_);
      return result == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType.UNRECOGNIZED : result;
    }

    public static final int CMD_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString cmd_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     *
     * Opaque value used to express a command. Should only be defined when
     * type = CMD.
     * </pre>
     *
     * <code>bytes cmd = 2;</code>
     * @return The cmd.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getCmd() {
      return cmd_;
    }

    public static final int PATH_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList path_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     *
     * List of strings identifying a particular dataset. Should only be defined
     * when type = PATH.
     * </pre>
     *
     * <code>repeated string path = 3;</code>
     * @return A list containing the path.
     */
    public com.google.protobuf.ProtocolStringList
        getPathList() {
      return path_;
    }
    /**
     * <pre>
     *
     * List of strings identifying a particular dataset. Should only be defined
     * when type = PATH.
     * </pre>
     *
     * <code>repeated string path = 3;</code>
     * @return The count of path.
     */
    public int getPathCount() {
      return path_.size();
    }
    /**
     * <pre>
     *
     * List of strings identifying a particular dataset. Should only be defined
     * when type = PATH.
     * </pre>
     *
     * <code>repeated string path = 3;</code>
     * @param index The index of the element to return.
     * @return The path at the given index.
     */
    public java.lang.String getPath(int index) {
      return path_.get(index);
    }
    /**
     * <pre>
     *
     * List of strings identifying a particular dataset. Should only be defined
     * when type = PATH.
     * </pre>
     *
     * <code>repeated string path = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the path at the given index.
     */
    public com.google.protobuf.ByteString
        getPathBytes(int index) {
      return path_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (type_ != org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType.UNKNOWN.getNumber()) {
        output.writeEnum(1, type_);
      }
      if (!cmd_.isEmpty()) {
        output.writeBytes(2, cmd_);
      }
      for (int i = 0; i < path_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, path_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (type_ != org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, type_);
      }
      if (!cmd_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, cmd_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < path_.size(); i++) {
          dataSize += computeStringSizeNoTag(path_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPathList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.FlightDescriptor)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.FlightDescriptor other = (org.apache.arrow.flight.impl.Flight.FlightDescriptor) obj;

      if (type_ != other.type_) return false;
      if (!getCmd()
          .equals(other.getCmd())) return false;
      if (!getPathList()
          .equals(other.getPathList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + type_;
      hash = (37 * hash) + CMD_FIELD_NUMBER;
      hash = (53 * hash) + getCmd().hashCode();
      if (getPathCount() > 0) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPathList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor 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 org.apache.arrow.flight.impl.Flight.FlightDescriptor parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor 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 org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.FlightDescriptor prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * The name or tag for a Flight. May be used as a way to retrieve or generate
     * a flight or be used to expose a set of previously defined flights.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.FlightDescriptor}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.FlightDescriptor)
        org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightDescriptor_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightDescriptor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.FlightDescriptor.class, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.FlightDescriptor.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = 0;
        cmd_ = com.google.protobuf.ByteString.EMPTY;
        path_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightDescriptor_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor build() {
        org.apache.arrow.flight.impl.Flight.FlightDescriptor result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor buildPartial() {
        org.apache.arrow.flight.impl.Flight.FlightDescriptor result = new org.apache.arrow.flight.impl.Flight.FlightDescriptor(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.FlightDescriptor result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = type_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.cmd_ = cmd_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          path_.makeImmutable();
          result.path_ = path_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.FlightDescriptor) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.FlightDescriptor)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.FlightDescriptor other) {
        if (other == org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance()) return this;
        if (other.type_ != 0) {
          setTypeValue(other.getTypeValue());
        }
        if (other.getCmd() != com.google.protobuf.ByteString.EMPTY) {
          setCmd(other.getCmd());
        }
        if (!other.path_.isEmpty()) {
          if (path_.isEmpty()) {
            path_ = other.path_;
            bitField0_ |= 0x00000004;
          } else {
            ensurePathIsMutable();
            path_.addAll(other.path_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                type_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                cmd_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensurePathIsMutable();
                path_.add(s);
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int type_ = 0;
      /**
       * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
       * @return The enum numeric value on the wire for type.
       */
      @java.lang.Override public int getTypeValue() {
        return type_;
      }
      /**
       * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
       * @param value The enum numeric value on the wire for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeValue(int value) {
        type_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
       * @return The type.
       */
      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType getType() {
        org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType result = org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType.forNumber(type_);
        return result == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType.UNRECOGNIZED : result;
      }
      /**
       * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(org.apache.arrow.flight.impl.Flight.FlightDescriptor.DescriptorType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightDescriptor.DescriptorType type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString cmd_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *
       * Opaque value used to express a command. Should only be defined when
       * type = CMD.
       * </pre>
       *
       * <code>bytes cmd = 2;</code>
       * @return The cmd.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getCmd() {
        return cmd_;
      }
      /**
       * <pre>
       *
       * Opaque value used to express a command. Should only be defined when
       * type = CMD.
       * </pre>
       *
       * <code>bytes cmd = 2;</code>
       * @param value The cmd to set.
       * @return This builder for chaining.
       */
      public Builder setCmd(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        cmd_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Opaque value used to express a command. Should only be defined when
       * type = CMD.
       * </pre>
       *
       * <code>bytes cmd = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCmd() {
        bitField0_ = (bitField0_ & ~0x00000002);
        cmd_ = getDefaultInstance().getCmd();
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensurePathIsMutable() {
        if (!path_.isModifiable()) {
          path_ = new com.google.protobuf.LazyStringArrayList(path_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @return A list containing the path.
       */
      public com.google.protobuf.ProtocolStringList
          getPathList() {
        path_.makeImmutable();
        return path_;
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @return The count of path.
       */
      public int getPathCount() {
        return path_.size();
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @param index The index of the element to return.
       * @return The path at the given index.
       */
      public java.lang.String getPath(int index) {
        return path_.get(index);
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the path at the given index.
       */
      public com.google.protobuf.ByteString
          getPathBytes(int index) {
        return path_.getByteString(index);
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @param index The index to set the value at.
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathIsMutable();
        path_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @param value The path to add.
       * @return This builder for chaining.
       */
      public Builder addPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathIsMutable();
        path_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @param values The path to add.
       * @return This builder for chaining.
       */
      public Builder addAllPath(
          java.lang.Iterable<java.lang.String> values) {
        ensurePathIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, path_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * List of strings identifying a particular dataset. Should only be defined
       * when type = PATH.
       * </pre>
       *
       * <code>repeated string path = 3;</code>
       * @param value The bytes of the path to add.
       * @return This builder for chaining.
       */
      public Builder addPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensurePathIsMutable();
        path_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.FlightDescriptor)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.FlightDescriptor)
    private static final org.apache.arrow.flight.impl.Flight.FlightDescriptor DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.FlightDescriptor();
    }

    public static org.apache.arrow.flight.impl.Flight.FlightDescriptor getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlightDescriptor>
        PARSER = new com.google.protobuf.AbstractParser<FlightDescriptor>() {
      @java.lang.Override
      public FlightDescriptor parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightDescriptor getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlightInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.FlightInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The schema of the dataset in its IPC form:
     *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
     *   4 bytes - the byte length of the payload
     *   a flatbuffer Message whose header is the Schema
     * </pre>
     *
     * <code>bytes schema = 1;</code>
     * @return The schema.
     */
    com.google.protobuf.ByteString getSchema();

    /**
     * <pre>
     *
     * The descriptor associated with this info.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     * @return Whether the flightDescriptor field is set.
     */
    boolean hasFlightDescriptor();
    /**
     * <pre>
     *
     * The descriptor associated with this info.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     * @return The flightDescriptor.
     */
    org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor();
    /**
     * <pre>
     *
     * The descriptor associated with this info.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     */
    org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder();

    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    java.util.List<org.apache.arrow.flight.impl.Flight.FlightEndpoint> 
        getEndpointList();
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    org.apache.arrow.flight.impl.Flight.FlightEndpoint getEndpoint(int index);
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    int getEndpointCount();
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    java.util.List<? extends org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder> 
        getEndpointOrBuilderList();
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder getEndpointOrBuilder(
        int index);

    /**
     * <pre>
     * Set these to -1 if unknown.
     * </pre>
     *
     * <code>int64 total_records = 4;</code>
     * @return The totalRecords.
     */
    long getTotalRecords();

    /**
     * <code>int64 total_bytes = 5;</code>
     * @return The totalBytes.
     */
    long getTotalBytes();

    /**
     * <pre>
     *
     * FlightEndpoints are in the same order as the data.
     * </pre>
     *
     * <code>bool ordered = 6;</code>
     * @return The ordered.
     */
    boolean getOrdered();

    /**
     * <pre>
     *
     * Application-defined metadata.
     *
     * There is no inherent or required relationship between this
     * and the app_metadata fields in the FlightEndpoints or resulting
     * FlightData messages. Since this metadata is application-defined,
     * a given application could define there to be a relationship,
     * but there is none required by the spec.
     * </pre>
     *
     * <code>bytes app_metadata = 7;</code>
     * @return The appMetadata.
     */
    com.google.protobuf.ByteString getAppMetadata();
  }
  /**
   * <pre>
   *
   * The access coordinates for retrieval of a dataset. With a FlightInfo, a
   * consumer is able to determine how to retrieve a dataset.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.FlightInfo}
   */
  public static final class FlightInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.FlightInfo)
      FlightInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FlightInfo.newBuilder() to construct.
    private FlightInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FlightInfo() {
      schema_ = com.google.protobuf.ByteString.EMPTY;
      endpoint_ = java.util.Collections.emptyList();
      appMetadata_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FlightInfo();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.FlightInfo.class, org.apache.arrow.flight.impl.Flight.FlightInfo.Builder.class);
    }

    private int bitField0_;
    public static final int SCHEMA_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString schema_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * The schema of the dataset in its IPC form:
     *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
     *   4 bytes - the byte length of the payload
     *   a flatbuffer Message whose header is the Schema
     * </pre>
     *
     * <code>bytes schema = 1;</code>
     * @return The schema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getSchema() {
      return schema_;
    }

    public static final int FLIGHT_DESCRIPTOR_FIELD_NUMBER = 2;
    private org.apache.arrow.flight.impl.Flight.FlightDescriptor flightDescriptor_;
    /**
     * <pre>
     *
     * The descriptor associated with this info.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     * @return Whether the flightDescriptor field is set.
     */
    @java.lang.Override
    public boolean hasFlightDescriptor() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * The descriptor associated with this info.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     * @return The flightDescriptor.
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor() {
      return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
    }
    /**
     * <pre>
     *
     * The descriptor associated with this info.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder() {
      return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
    }

    public static final int ENDPOINT_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<org.apache.arrow.flight.impl.Flight.FlightEndpoint> endpoint_;
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    @java.lang.Override
    public java.util.List<org.apache.arrow.flight.impl.Flight.FlightEndpoint> getEndpointList() {
      return endpoint_;
    }
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder> 
        getEndpointOrBuilderList() {
      return endpoint_;
    }
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    @java.lang.Override
    public int getEndpointCount() {
      return endpoint_.size();
    }
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightEndpoint getEndpoint(int index) {
      return endpoint_.get(index);
    }
    /**
     * <pre>
     *
     * A list of endpoints associated with the flight. To consume the
     * whole flight, all endpoints (and hence all Tickets) must be
     * consumed. Endpoints can be consumed in any order.
     *
     * In other words, an application can use multiple endpoints to
     * represent partitioned data.
     *
     * If the returned data has an ordering, an application can use
     * "FlightInfo.ordered = true" or should return the all data in a
     * single endpoint. Otherwise, there is no ordering defined on
     * endpoints or the data within.
     *
     * A client can read ordered data by reading data from returned
     * endpoints, in order, from front to back.
     *
     * Note that a client may ignore "FlightInfo.ordered = true". If an
     * ordering is important for an application, an application must
     * choose one of them:
     *
     * * An application requires that all clients must read data in
     *   returned endpoints order.
     * * An application must return the all data in a single endpoint.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder getEndpointOrBuilder(
        int index) {
      return endpoint_.get(index);
    }

    public static final int TOTAL_RECORDS_FIELD_NUMBER = 4;
    private long totalRecords_ = 0L;
    /**
     * <pre>
     * Set these to -1 if unknown.
     * </pre>
     *
     * <code>int64 total_records = 4;</code>
     * @return The totalRecords.
     */
    @java.lang.Override
    public long getTotalRecords() {
      return totalRecords_;
    }

    public static final int TOTAL_BYTES_FIELD_NUMBER = 5;
    private long totalBytes_ = 0L;
    /**
     * <code>int64 total_bytes = 5;</code>
     * @return The totalBytes.
     */
    @java.lang.Override
    public long getTotalBytes() {
      return totalBytes_;
    }

    public static final int ORDERED_FIELD_NUMBER = 6;
    private boolean ordered_ = false;
    /**
     * <pre>
     *
     * FlightEndpoints are in the same order as the data.
     * </pre>
     *
     * <code>bool ordered = 6;</code>
     * @return The ordered.
     */
    @java.lang.Override
    public boolean getOrdered() {
      return ordered_;
    }

    public static final int APP_METADATA_FIELD_NUMBER = 7;
    private com.google.protobuf.ByteString appMetadata_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     *
     * Application-defined metadata.
     *
     * There is no inherent or required relationship between this
     * and the app_metadata fields in the FlightEndpoints or resulting
     * FlightData messages. Since this metadata is application-defined,
     * a given application could define there to be a relationship,
     * but there is none required by the spec.
     * </pre>
     *
     * <code>bytes app_metadata = 7;</code>
     * @return The appMetadata.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getAppMetadata() {
      return appMetadata_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!schema_.isEmpty()) {
        output.writeBytes(1, schema_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(2, getFlightDescriptor());
      }
      for (int i = 0; i < endpoint_.size(); i++) {
        output.writeMessage(3, endpoint_.get(i));
      }
      if (totalRecords_ != 0L) {
        output.writeInt64(4, totalRecords_);
      }
      if (totalBytes_ != 0L) {
        output.writeInt64(5, totalBytes_);
      }
      if (ordered_ != false) {
        output.writeBool(6, ordered_);
      }
      if (!appMetadata_.isEmpty()) {
        output.writeBytes(7, appMetadata_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!schema_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, schema_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getFlightDescriptor());
      }
      for (int i = 0; i < endpoint_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, endpoint_.get(i));
      }
      if (totalRecords_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, totalRecords_);
      }
      if (totalBytes_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, totalBytes_);
      }
      if (ordered_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, ordered_);
      }
      if (!appMetadata_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, appMetadata_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.FlightInfo)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.FlightInfo other = (org.apache.arrow.flight.impl.Flight.FlightInfo) obj;

      if (!getSchema()
          .equals(other.getSchema())) return false;
      if (hasFlightDescriptor() != other.hasFlightDescriptor()) return false;
      if (hasFlightDescriptor()) {
        if (!getFlightDescriptor()
            .equals(other.getFlightDescriptor())) return false;
      }
      if (!getEndpointList()
          .equals(other.getEndpointList())) return false;
      if (getTotalRecords()
          != other.getTotalRecords()) return false;
      if (getTotalBytes()
          != other.getTotalBytes()) return false;
      if (getOrdered()
          != other.getOrdered()) return false;
      if (!getAppMetadata()
          .equals(other.getAppMetadata())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
      hash = (53 * hash) + getSchema().hashCode();
      if (hasFlightDescriptor()) {
        hash = (37 * hash) + FLIGHT_DESCRIPTOR_FIELD_NUMBER;
        hash = (53 * hash) + getFlightDescriptor().hashCode();
      }
      if (getEndpointCount() > 0) {
        hash = (37 * hash) + ENDPOINT_FIELD_NUMBER;
        hash = (53 * hash) + getEndpointList().hashCode();
      }
      hash = (37 * hash) + TOTAL_RECORDS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTotalRecords());
      hash = (37 * hash) + TOTAL_BYTES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTotalBytes());
      hash = (37 * hash) + ORDERED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getOrdered());
      hash = (37 * hash) + APP_METADATA_FIELD_NUMBER;
      hash = (53 * hash) + getAppMetadata().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightInfo 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 org.apache.arrow.flight.impl.Flight.FlightInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.FlightInfo 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 org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.FlightInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * The access coordinates for retrieval of a dataset. With a FlightInfo, a
     * consumer is able to determine how to retrieve a dataset.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.FlightInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.FlightInfo)
        org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.FlightInfo.class, org.apache.arrow.flight.impl.Flight.FlightInfo.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.FlightInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFlightDescriptorFieldBuilder();
          getEndpointFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        schema_ = com.google.protobuf.ByteString.EMPTY;
        flightDescriptor_ = null;
        if (flightDescriptorBuilder_ != null) {
          flightDescriptorBuilder_.dispose();
          flightDescriptorBuilder_ = null;
        }
        if (endpointBuilder_ == null) {
          endpoint_ = java.util.Collections.emptyList();
        } else {
          endpoint_ = null;
          endpointBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        totalRecords_ = 0L;
        totalBytes_ = 0L;
        ordered_ = false;
        appMetadata_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightInfo_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightInfo getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightInfo build() {
        org.apache.arrow.flight.impl.Flight.FlightInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightInfo buildPartial() {
        org.apache.arrow.flight.impl.Flight.FlightInfo result = new org.apache.arrow.flight.impl.Flight.FlightInfo(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(org.apache.arrow.flight.impl.Flight.FlightInfo result) {
        if (endpointBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            endpoint_ = java.util.Collections.unmodifiableList(endpoint_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.endpoint_ = endpoint_;
        } else {
          result.endpoint_ = endpointBuilder_.build();
        }
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.FlightInfo result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.schema_ = schema_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.flightDescriptor_ = flightDescriptorBuilder_ == null
              ? flightDescriptor_
              : flightDescriptorBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.totalRecords_ = totalRecords_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.totalBytes_ = totalBytes_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.ordered_ = ordered_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.appMetadata_ = appMetadata_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.FlightInfo) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.FlightInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.FlightInfo other) {
        if (other == org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance()) return this;
        if (other.getSchema() != com.google.protobuf.ByteString.EMPTY) {
          setSchema(other.getSchema());
        }
        if (other.hasFlightDescriptor()) {
          mergeFlightDescriptor(other.getFlightDescriptor());
        }
        if (endpointBuilder_ == null) {
          if (!other.endpoint_.isEmpty()) {
            if (endpoint_.isEmpty()) {
              endpoint_ = other.endpoint_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureEndpointIsMutable();
              endpoint_.addAll(other.endpoint_);
            }
            onChanged();
          }
        } else {
          if (!other.endpoint_.isEmpty()) {
            if (endpointBuilder_.isEmpty()) {
              endpointBuilder_.dispose();
              endpointBuilder_ = null;
              endpoint_ = other.endpoint_;
              bitField0_ = (bitField0_ & ~0x00000004);
              endpointBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEndpointFieldBuilder() : null;
            } else {
              endpointBuilder_.addAllMessages(other.endpoint_);
            }
          }
        }
        if (other.getTotalRecords() != 0L) {
          setTotalRecords(other.getTotalRecords());
        }
        if (other.getTotalBytes() != 0L) {
          setTotalBytes(other.getTotalBytes());
        }
        if (other.getOrdered() != false) {
          setOrdered(other.getOrdered());
        }
        if (other.getAppMetadata() != com.google.protobuf.ByteString.EMPTY) {
          setAppMetadata(other.getAppMetadata());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                schema_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getFlightDescriptorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                org.apache.arrow.flight.impl.Flight.FlightEndpoint m =
                    input.readMessage(
                        org.apache.arrow.flight.impl.Flight.FlightEndpoint.parser(),
                        extensionRegistry);
                if (endpointBuilder_ == null) {
                  ensureEndpointIsMutable();
                  endpoint_.add(m);
                } else {
                  endpointBuilder_.addMessage(m);
                }
                break;
              } // case 26
              case 32: {
                totalRecords_ = input.readInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                totalBytes_ = input.readInt64();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                ordered_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 58: {
                appMetadata_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString schema_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * The schema of the dataset in its IPC form:
       *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
       *   4 bytes - the byte length of the payload
       *   a flatbuffer Message whose header is the Schema
       * </pre>
       *
       * <code>bytes schema = 1;</code>
       * @return The schema.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getSchema() {
        return schema_;
      }
      /**
       * <pre>
       * The schema of the dataset in its IPC form:
       *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
       *   4 bytes - the byte length of the payload
       *   a flatbuffer Message whose header is the Schema
       * </pre>
       *
       * <code>bytes schema = 1;</code>
       * @param value The schema to set.
       * @return This builder for chaining.
       */
      public Builder setSchema(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        schema_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The schema of the dataset in its IPC form:
       *   4 bytes - an optional IPC_CONTINUATION_TOKEN prefix
       *   4 bytes - the byte length of the payload
       *   a flatbuffer Message whose header is the Schema
       * </pre>
       *
       * <code>bytes schema = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSchema() {
        bitField0_ = (bitField0_ & ~0x00000001);
        schema_ = getDefaultInstance().getSchema();
        onChanged();
        return this;
      }

      private org.apache.arrow.flight.impl.Flight.FlightDescriptor flightDescriptor_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder> flightDescriptorBuilder_;
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       * @return Whether the flightDescriptor field is set.
       */
      public boolean hasFlightDescriptor() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       * @return The flightDescriptor.
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor() {
        if (flightDescriptorBuilder_ == null) {
          return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
        } else {
          return flightDescriptorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public Builder setFlightDescriptor(org.apache.arrow.flight.impl.Flight.FlightDescriptor value) {
        if (flightDescriptorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          flightDescriptor_ = value;
        } else {
          flightDescriptorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public Builder setFlightDescriptor(
          org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder builderForValue) {
        if (flightDescriptorBuilder_ == null) {
          flightDescriptor_ = builderForValue.build();
        } else {
          flightDescriptorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public Builder mergeFlightDescriptor(org.apache.arrow.flight.impl.Flight.FlightDescriptor value) {
        if (flightDescriptorBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            flightDescriptor_ != null &&
            flightDescriptor_ != org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance()) {
            getFlightDescriptorBuilder().mergeFrom(value);
          } else {
            flightDescriptor_ = value;
          }
        } else {
          flightDescriptorBuilder_.mergeFrom(value);
        }
        if (flightDescriptor_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public Builder clearFlightDescriptor() {
        bitField0_ = (bitField0_ & ~0x00000002);
        flightDescriptor_ = null;
        if (flightDescriptorBuilder_ != null) {
          flightDescriptorBuilder_.dispose();
          flightDescriptorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder getFlightDescriptorBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getFlightDescriptorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder() {
        if (flightDescriptorBuilder_ != null) {
          return flightDescriptorBuilder_.getMessageOrBuilder();
        } else {
          return flightDescriptor_ == null ?
              org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
        }
      }
      /**
       * <pre>
       *
       * The descriptor associated with this info.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder> 
          getFlightDescriptorFieldBuilder() {
        if (flightDescriptorBuilder_ == null) {
          flightDescriptorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder>(
                  getFlightDescriptor(),
                  getParentForChildren(),
                  isClean());
          flightDescriptor_ = null;
        }
        return flightDescriptorBuilder_;
      }

      private java.util.List<org.apache.arrow.flight.impl.Flight.FlightEndpoint> endpoint_ =
        java.util.Collections.emptyList();
      private void ensureEndpointIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          endpoint_ = new java.util.ArrayList<org.apache.arrow.flight.impl.Flight.FlightEndpoint>(endpoint_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightEndpoint, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder, org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder> endpointBuilder_;

      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public java.util.List<org.apache.arrow.flight.impl.Flight.FlightEndpoint> getEndpointList() {
        if (endpointBuilder_ == null) {
          return java.util.Collections.unmodifiableList(endpoint_);
        } else {
          return endpointBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public int getEndpointCount() {
        if (endpointBuilder_ == null) {
          return endpoint_.size();
        } else {
          return endpointBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint getEndpoint(int index) {
        if (endpointBuilder_ == null) {
          return endpoint_.get(index);
        } else {
          return endpointBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder setEndpoint(
          int index, org.apache.arrow.flight.impl.Flight.FlightEndpoint value) {
        if (endpointBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointIsMutable();
          endpoint_.set(index, value);
          onChanged();
        } else {
          endpointBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder setEndpoint(
          int index, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder builderForValue) {
        if (endpointBuilder_ == null) {
          ensureEndpointIsMutable();
          endpoint_.set(index, builderForValue.build());
          onChanged();
        } else {
          endpointBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder addEndpoint(org.apache.arrow.flight.impl.Flight.FlightEndpoint value) {
        if (endpointBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointIsMutable();
          endpoint_.add(value);
          onChanged();
        } else {
          endpointBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder addEndpoint(
          int index, org.apache.arrow.flight.impl.Flight.FlightEndpoint value) {
        if (endpointBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEndpointIsMutable();
          endpoint_.add(index, value);
          onChanged();
        } else {
          endpointBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder addEndpoint(
          org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder builderForValue) {
        if (endpointBuilder_ == null) {
          ensureEndpointIsMutable();
          endpoint_.add(builderForValue.build());
          onChanged();
        } else {
          endpointBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder addEndpoint(
          int index, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder builderForValue) {
        if (endpointBuilder_ == null) {
          ensureEndpointIsMutable();
          endpoint_.add(index, builderForValue.build());
          onChanged();
        } else {
          endpointBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder addAllEndpoint(
          java.lang.Iterable<? extends org.apache.arrow.flight.impl.Flight.FlightEndpoint> values) {
        if (endpointBuilder_ == null) {
          ensureEndpointIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, endpoint_);
          onChanged();
        } else {
          endpointBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder clearEndpoint() {
        if (endpointBuilder_ == null) {
          endpoint_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          endpointBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public Builder removeEndpoint(int index) {
        if (endpointBuilder_ == null) {
          ensureEndpointIsMutable();
          endpoint_.remove(index);
          onChanged();
        } else {
          endpointBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder getEndpointBuilder(
          int index) {
        return getEndpointFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder getEndpointOrBuilder(
          int index) {
        if (endpointBuilder_ == null) {
          return endpoint_.get(index);  } else {
          return endpointBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public java.util.List<? extends org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder> 
           getEndpointOrBuilderList() {
        if (endpointBuilder_ != null) {
          return endpointBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(endpoint_);
        }
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder addEndpointBuilder() {
        return getEndpointFieldBuilder().addBuilder(
            org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance());
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder addEndpointBuilder(
          int index) {
        return getEndpointFieldBuilder().addBuilder(
            index, org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance());
      }
      /**
       * <pre>
       *
       * A list of endpoints associated with the flight. To consume the
       * whole flight, all endpoints (and hence all Tickets) must be
       * consumed. Endpoints can be consumed in any order.
       *
       * In other words, an application can use multiple endpoints to
       * represent partitioned data.
       *
       * If the returned data has an ordering, an application can use
       * "FlightInfo.ordered = true" or should return the all data in a
       * single endpoint. Otherwise, there is no ordering defined on
       * endpoints or the data within.
       *
       * A client can read ordered data by reading data from returned
       * endpoints, in order, from front to back.
       *
       * Note that a client may ignore "FlightInfo.ordered = true". If an
       * ordering is important for an application, an application must
       * choose one of them:
       *
       * * An application requires that all clients must read data in
       *   returned endpoints order.
       * * An application must return the all data in a single endpoint.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.FlightEndpoint endpoint = 3;</code>
       */
      public java.util.List<org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder> 
           getEndpointBuilderList() {
        return getEndpointFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightEndpoint, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder, org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder> 
          getEndpointFieldBuilder() {
        if (endpointBuilder_ == null) {
          endpointBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.FlightEndpoint, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder, org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder>(
                  endpoint_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          endpoint_ = null;
        }
        return endpointBuilder_;
      }

      private long totalRecords_ ;
      /**
       * <pre>
       * Set these to -1 if unknown.
       * </pre>
       *
       * <code>int64 total_records = 4;</code>
       * @return The totalRecords.
       */
      @java.lang.Override
      public long getTotalRecords() {
        return totalRecords_;
      }
      /**
       * <pre>
       * Set these to -1 if unknown.
       * </pre>
       *
       * <code>int64 total_records = 4;</code>
       * @param value The totalRecords to set.
       * @return This builder for chaining.
       */
      public Builder setTotalRecords(long value) {

        totalRecords_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Set these to -1 if unknown.
       * </pre>
       *
       * <code>int64 total_records = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotalRecords() {
        bitField0_ = (bitField0_ & ~0x00000008);
        totalRecords_ = 0L;
        onChanged();
        return this;
      }

      private long totalBytes_ ;
      /**
       * <code>int64 total_bytes = 5;</code>
       * @return The totalBytes.
       */
      @java.lang.Override
      public long getTotalBytes() {
        return totalBytes_;
      }
      /**
       * <code>int64 total_bytes = 5;</code>
       * @param value The totalBytes to set.
       * @return This builder for chaining.
       */
      public Builder setTotalBytes(long value) {

        totalBytes_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>int64 total_bytes = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotalBytes() {
        bitField0_ = (bitField0_ & ~0x00000010);
        totalBytes_ = 0L;
        onChanged();
        return this;
      }

      private boolean ordered_ ;
      /**
       * <pre>
       *
       * FlightEndpoints are in the same order as the data.
       * </pre>
       *
       * <code>bool ordered = 6;</code>
       * @return The ordered.
       */
      @java.lang.Override
      public boolean getOrdered() {
        return ordered_;
      }
      /**
       * <pre>
       *
       * FlightEndpoints are in the same order as the data.
       * </pre>
       *
       * <code>bool ordered = 6;</code>
       * @param value The ordered to set.
       * @return This builder for chaining.
       */
      public Builder setOrdered(boolean value) {

        ordered_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * FlightEndpoints are in the same order as the data.
       * </pre>
       *
       * <code>bool ordered = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrdered() {
        bitField0_ = (bitField0_ & ~0x00000020);
        ordered_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString appMetadata_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *
       * Application-defined metadata.
       *
       * There is no inherent or required relationship between this
       * and the app_metadata fields in the FlightEndpoints or resulting
       * FlightData messages. Since this metadata is application-defined,
       * a given application could define there to be a relationship,
       * but there is none required by the spec.
       * </pre>
       *
       * <code>bytes app_metadata = 7;</code>
       * @return The appMetadata.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getAppMetadata() {
        return appMetadata_;
      }
      /**
       * <pre>
       *
       * Application-defined metadata.
       *
       * There is no inherent or required relationship between this
       * and the app_metadata fields in the FlightEndpoints or resulting
       * FlightData messages. Since this metadata is application-defined,
       * a given application could define there to be a relationship,
       * but there is none required by the spec.
       * </pre>
       *
       * <code>bytes app_metadata = 7;</code>
       * @param value The appMetadata to set.
       * @return This builder for chaining.
       */
      public Builder setAppMetadata(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        appMetadata_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Application-defined metadata.
       *
       * There is no inherent or required relationship between this
       * and the app_metadata fields in the FlightEndpoints or resulting
       * FlightData messages. Since this metadata is application-defined,
       * a given application could define there to be a relationship,
       * but there is none required by the spec.
       * </pre>
       *
       * <code>bytes app_metadata = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppMetadata() {
        bitField0_ = (bitField0_ & ~0x00000040);
        appMetadata_ = getDefaultInstance().getAppMetadata();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.FlightInfo)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.FlightInfo)
    private static final org.apache.arrow.flight.impl.Flight.FlightInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.FlightInfo();
    }

    public static org.apache.arrow.flight.impl.Flight.FlightInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlightInfo>
        PARSER = new com.google.protobuf.AbstractParser<FlightInfo>() {
      @java.lang.Override
      public FlightInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PollInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.PollInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * The currently available results.
     *
     * If "flight_descriptor" is not specified, the query is complete
     * and "info" specifies all results. Otherwise, "info" contains
     * partial query results.
     *
     * Note that each PollInfo response contains a complete
     * FlightInfo (not just the delta between the previous and current
     * FlightInfo).
     *
     * Subsequent PollInfo responses may only append new endpoints to
     * info.
     *
     * Clients can begin fetching results via DoGet(Ticket) with the
     * ticket in the info before the query is
     * completed. FlightInfo.ordered is also valid.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     * @return Whether the info field is set.
     */
    boolean hasInfo();
    /**
     * <pre>
     *
     * The currently available results.
     *
     * If "flight_descriptor" is not specified, the query is complete
     * and "info" specifies all results. Otherwise, "info" contains
     * partial query results.
     *
     * Note that each PollInfo response contains a complete
     * FlightInfo (not just the delta between the previous and current
     * FlightInfo).
     *
     * Subsequent PollInfo responses may only append new endpoints to
     * info.
     *
     * Clients can begin fetching results via DoGet(Ticket) with the
     * ticket in the info before the query is
     * completed. FlightInfo.ordered is also valid.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     * @return The info.
     */
    org.apache.arrow.flight.impl.Flight.FlightInfo getInfo();
    /**
     * <pre>
     *
     * The currently available results.
     *
     * If "flight_descriptor" is not specified, the query is complete
     * and "info" specifies all results. Otherwise, "info" contains
     * partial query results.
     *
     * Note that each PollInfo response contains a complete
     * FlightInfo (not just the delta between the previous and current
     * FlightInfo).
     *
     * Subsequent PollInfo responses may only append new endpoints to
     * info.
     *
     * Clients can begin fetching results via DoGet(Ticket) with the
     * ticket in the info before the query is
     * completed. FlightInfo.ordered is also valid.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     */
    org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder getInfoOrBuilder();

    /**
     * <pre>
     *
     * The descriptor the client should use on the next try.
     * If unset, the query is complete.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     * @return Whether the flightDescriptor field is set.
     */
    boolean hasFlightDescriptor();
    /**
     * <pre>
     *
     * The descriptor the client should use on the next try.
     * If unset, the query is complete.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     * @return The flightDescriptor.
     */
    org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor();
    /**
     * <pre>
     *
     * The descriptor the client should use on the next try.
     * If unset, the query is complete.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     */
    org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder();

    /**
     * <pre>
     *
     * Query progress. If known, must be in [0.0, 1.0] but need not be
     * monotonic or nondecreasing. If unknown, do not set.
     * </pre>
     *
     * <code>optional double progress = 3;</code>
     * @return Whether the progress field is set.
     */
    boolean hasProgress();
    /**
     * <pre>
     *
     * Query progress. If known, must be in [0.0, 1.0] but need not be
     * monotonic or nondecreasing. If unknown, do not set.
     * </pre>
     *
     * <code>optional double progress = 3;</code>
     * @return The progress.
     */
    double getProgress();

    /**
     * <pre>
     *
     * Expiration time for this request. After this passes, the server
     * might not accept the retry descriptor anymore (and the query may
     * be cancelled). This may be updated on a call to PollFlightInfo.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
     * @return Whether the expirationTime field is set.
     */
    boolean hasExpirationTime();
    /**
     * <pre>
     *
     * Expiration time for this request. After this passes, the server
     * might not accept the retry descriptor anymore (and the query may
     * be cancelled). This may be updated on a call to PollFlightInfo.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
     * @return The expirationTime.
     */
    com.google.protobuf.Timestamp getExpirationTime();
    /**
     * <pre>
     *
     * Expiration time for this request. After this passes, the server
     * might not accept the retry descriptor anymore (and the query may
     * be cancelled). This may be updated on a call to PollFlightInfo.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
     */
    com.google.protobuf.TimestampOrBuilder getExpirationTimeOrBuilder();
  }
  /**
   * <pre>
   *
   * The information to process a long-running query.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.PollInfo}
   */
  public static final class PollInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.PollInfo)
      PollInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PollInfo.newBuilder() to construct.
    private PollInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PollInfo() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PollInfo();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PollInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PollInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.PollInfo.class, org.apache.arrow.flight.impl.Flight.PollInfo.Builder.class);
    }

    private int bitField0_;
    public static final int INFO_FIELD_NUMBER = 1;
    private org.apache.arrow.flight.impl.Flight.FlightInfo info_;
    /**
     * <pre>
     *
     * The currently available results.
     *
     * If "flight_descriptor" is not specified, the query is complete
     * and "info" specifies all results. Otherwise, "info" contains
     * partial query results.
     *
     * Note that each PollInfo response contains a complete
     * FlightInfo (not just the delta between the previous and current
     * FlightInfo).
     *
     * Subsequent PollInfo responses may only append new endpoints to
     * info.
     *
     * Clients can begin fetching results via DoGet(Ticket) with the
     * ticket in the info before the query is
     * completed. FlightInfo.ordered is also valid.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     * @return Whether the info field is set.
     */
    @java.lang.Override
    public boolean hasInfo() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * The currently available results.
     *
     * If "flight_descriptor" is not specified, the query is complete
     * and "info" specifies all results. Otherwise, "info" contains
     * partial query results.
     *
     * Note that each PollInfo response contains a complete
     * FlightInfo (not just the delta between the previous and current
     * FlightInfo).
     *
     * Subsequent PollInfo responses may only append new endpoints to
     * info.
     *
     * Clients can begin fetching results via DoGet(Ticket) with the
     * ticket in the info before the query is
     * completed. FlightInfo.ordered is also valid.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     * @return The info.
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightInfo getInfo() {
      return info_ == null ? org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance() : info_;
    }
    /**
     * <pre>
     *
     * The currently available results.
     *
     * If "flight_descriptor" is not specified, the query is complete
     * and "info" specifies all results. Otherwise, "info" contains
     * partial query results.
     *
     * Note that each PollInfo response contains a complete
     * FlightInfo (not just the delta between the previous and current
     * FlightInfo).
     *
     * Subsequent PollInfo responses may only append new endpoints to
     * info.
     *
     * Clients can begin fetching results via DoGet(Ticket) with the
     * ticket in the info before the query is
     * completed. FlightInfo.ordered is also valid.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder getInfoOrBuilder() {
      return info_ == null ? org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance() : info_;
    }

    public static final int FLIGHT_DESCRIPTOR_FIELD_NUMBER = 2;
    private org.apache.arrow.flight.impl.Flight.FlightDescriptor flightDescriptor_;
    /**
     * <pre>
     *
     * The descriptor the client should use on the next try.
     * If unset, the query is complete.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     * @return Whether the flightDescriptor field is set.
     */
    @java.lang.Override
    public boolean hasFlightDescriptor() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *
     * The descriptor the client should use on the next try.
     * If unset, the query is complete.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     * @return The flightDescriptor.
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor() {
      return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
    }
    /**
     * <pre>
     *
     * The descriptor the client should use on the next try.
     * If unset, the query is complete.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder() {
      return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
    }

    public static final int PROGRESS_FIELD_NUMBER = 3;
    private double progress_ = 0D;
    /**
     * <pre>
     *
     * Query progress. If known, must be in [0.0, 1.0] but need not be
     * monotonic or nondecreasing. If unknown, do not set.
     * </pre>
     *
     * <code>optional double progress = 3;</code>
     * @return Whether the progress field is set.
     */
    @java.lang.Override
    public boolean hasProgress() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     *
     * Query progress. If known, must be in [0.0, 1.0] but need not be
     * monotonic or nondecreasing. If unknown, do not set.
     * </pre>
     *
     * <code>optional double progress = 3;</code>
     * @return The progress.
     */
    @java.lang.Override
    public double getProgress() {
      return progress_;
    }

    public static final int EXPIRATION_TIME_FIELD_NUMBER = 4;
    private com.google.protobuf.Timestamp expirationTime_;
    /**
     * <pre>
     *
     * Expiration time for this request. After this passes, the server
     * might not accept the retry descriptor anymore (and the query may
     * be cancelled). This may be updated on a call to PollFlightInfo.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
     * @return Whether the expirationTime field is set.
     */
    @java.lang.Override
    public boolean hasExpirationTime() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     *
     * Expiration time for this request. After this passes, the server
     * might not accept the retry descriptor anymore (and the query may
     * be cancelled). This may be updated on a call to PollFlightInfo.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
     * @return The expirationTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getExpirationTime() {
      return expirationTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expirationTime_;
    }
    /**
     * <pre>
     *
     * Expiration time for this request. After this passes, the server
     * might not accept the retry descriptor anymore (and the query may
     * be cancelled). This may be updated on a call to PollFlightInfo.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getExpirationTimeOrBuilder() {
      return expirationTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expirationTime_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getInfo());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getFlightDescriptor());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeDouble(3, progress_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getExpirationTime());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getInfo());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getFlightDescriptor());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, progress_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getExpirationTime());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.PollInfo)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.PollInfo other = (org.apache.arrow.flight.impl.Flight.PollInfo) obj;

      if (hasInfo() != other.hasInfo()) return false;
      if (hasInfo()) {
        if (!getInfo()
            .equals(other.getInfo())) return false;
      }
      if (hasFlightDescriptor() != other.hasFlightDescriptor()) return false;
      if (hasFlightDescriptor()) {
        if (!getFlightDescriptor()
            .equals(other.getFlightDescriptor())) return false;
      }
      if (hasProgress() != other.hasProgress()) return false;
      if (hasProgress()) {
        if (java.lang.Double.doubleToLongBits(getProgress())
            != java.lang.Double.doubleToLongBits(
                other.getProgress())) return false;
      }
      if (hasExpirationTime() != other.hasExpirationTime()) return false;
      if (hasExpirationTime()) {
        if (!getExpirationTime()
            .equals(other.getExpirationTime())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasInfo()) {
        hash = (37 * hash) + INFO_FIELD_NUMBER;
        hash = (53 * hash) + getInfo().hashCode();
      }
      if (hasFlightDescriptor()) {
        hash = (37 * hash) + FLIGHT_DESCRIPTOR_FIELD_NUMBER;
        hash = (53 * hash) + getFlightDescriptor().hashCode();
      }
      if (hasProgress()) {
        hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getProgress()));
      }
      if (hasExpirationTime()) {
        hash = (37 * hash) + EXPIRATION_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getExpirationTime().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.PollInfo 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 org.apache.arrow.flight.impl.Flight.PollInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.PollInfo 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 org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.PollInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.PollInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * The information to process a long-running query.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.PollInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.PollInfo)
        org.apache.arrow.flight.impl.Flight.PollInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PollInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PollInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.PollInfo.class, org.apache.arrow.flight.impl.Flight.PollInfo.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.PollInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getInfoFieldBuilder();
          getFlightDescriptorFieldBuilder();
          getExpirationTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        info_ = null;
        if (infoBuilder_ != null) {
          infoBuilder_.dispose();
          infoBuilder_ = null;
        }
        flightDescriptor_ = null;
        if (flightDescriptorBuilder_ != null) {
          flightDescriptorBuilder_.dispose();
          flightDescriptorBuilder_ = null;
        }
        progress_ = 0D;
        expirationTime_ = null;
        if (expirationTimeBuilder_ != null) {
          expirationTimeBuilder_.dispose();
          expirationTimeBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PollInfo_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.PollInfo getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.PollInfo.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.PollInfo build() {
        org.apache.arrow.flight.impl.Flight.PollInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.PollInfo buildPartial() {
        org.apache.arrow.flight.impl.Flight.PollInfo result = new org.apache.arrow.flight.impl.Flight.PollInfo(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.PollInfo result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.info_ = infoBuilder_ == null
              ? info_
              : infoBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.flightDescriptor_ = flightDescriptorBuilder_ == null
              ? flightDescriptor_
              : flightDescriptorBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.progress_ = progress_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.expirationTime_ = expirationTimeBuilder_ == null
              ? expirationTime_
              : expirationTimeBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.PollInfo) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.PollInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.PollInfo other) {
        if (other == org.apache.arrow.flight.impl.Flight.PollInfo.getDefaultInstance()) return this;
        if (other.hasInfo()) {
          mergeInfo(other.getInfo());
        }
        if (other.hasFlightDescriptor()) {
          mergeFlightDescriptor(other.getFlightDescriptor());
        }
        if (other.hasProgress()) {
          setProgress(other.getProgress());
        }
        if (other.hasExpirationTime()) {
          mergeExpirationTime(other.getExpirationTime());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getFlightDescriptorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 25: {
                progress_ = input.readDouble();
                bitField0_ |= 0x00000004;
                break;
              } // case 25
              case 34: {
                input.readMessage(
                    getExpirationTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.apache.arrow.flight.impl.Flight.FlightInfo info_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightInfo, org.apache.arrow.flight.impl.Flight.FlightInfo.Builder, org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder> infoBuilder_;
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       * @return Whether the info field is set.
       */
      public boolean hasInfo() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       * @return The info.
       */
      public org.apache.arrow.flight.impl.Flight.FlightInfo getInfo() {
        if (infoBuilder_ == null) {
          return info_ == null ? org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance() : info_;
        } else {
          return infoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public Builder setInfo(org.apache.arrow.flight.impl.Flight.FlightInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          info_ = value;
        } else {
          infoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public Builder setInfo(
          org.apache.arrow.flight.impl.Flight.FlightInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          info_ = builderForValue.build();
        } else {
          infoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public Builder mergeInfo(org.apache.arrow.flight.impl.Flight.FlightInfo value) {
        if (infoBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            info_ != null &&
            info_ != org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance()) {
            getInfoBuilder().mergeFrom(value);
          } else {
            info_ = value;
          }
        } else {
          infoBuilder_.mergeFrom(value);
        }
        if (info_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public Builder clearInfo() {
        bitField0_ = (bitField0_ & ~0x00000001);
        info_ = null;
        if (infoBuilder_ != null) {
          infoBuilder_.dispose();
          infoBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightInfo.Builder getInfoBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder getInfoOrBuilder() {
        if (infoBuilder_ != null) {
          return infoBuilder_.getMessageOrBuilder();
        } else {
          return info_ == null ?
              org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance() : info_;
        }
      }
      /**
       * <pre>
       *
       * The currently available results.
       *
       * If "flight_descriptor" is not specified, the query is complete
       * and "info" specifies all results. Otherwise, "info" contains
       * partial query results.
       *
       * Note that each PollInfo response contains a complete
       * FlightInfo (not just the delta between the previous and current
       * FlightInfo).
       *
       * Subsequent PollInfo responses may only append new endpoints to
       * info.
       *
       * Clients can begin fetching results via DoGet(Ticket) with the
       * ticket in the info before the query is
       * completed. FlightInfo.ordered is also valid.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightInfo, org.apache.arrow.flight.impl.Flight.FlightInfo.Builder, org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder> 
          getInfoFieldBuilder() {
        if (infoBuilder_ == null) {
          infoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.FlightInfo, org.apache.arrow.flight.impl.Flight.FlightInfo.Builder, org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder>(
                  getInfo(),
                  getParentForChildren(),
                  isClean());
          info_ = null;
        }
        return infoBuilder_;
      }

      private org.apache.arrow.flight.impl.Flight.FlightDescriptor flightDescriptor_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder> flightDescriptorBuilder_;
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       * @return Whether the flightDescriptor field is set.
       */
      public boolean hasFlightDescriptor() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       * @return The flightDescriptor.
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor() {
        if (flightDescriptorBuilder_ == null) {
          return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
        } else {
          return flightDescriptorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public Builder setFlightDescriptor(org.apache.arrow.flight.impl.Flight.FlightDescriptor value) {
        if (flightDescriptorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          flightDescriptor_ = value;
        } else {
          flightDescriptorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public Builder setFlightDescriptor(
          org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder builderForValue) {
        if (flightDescriptorBuilder_ == null) {
          flightDescriptor_ = builderForValue.build();
        } else {
          flightDescriptorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public Builder mergeFlightDescriptor(org.apache.arrow.flight.impl.Flight.FlightDescriptor value) {
        if (flightDescriptorBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            flightDescriptor_ != null &&
            flightDescriptor_ != org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance()) {
            getFlightDescriptorBuilder().mergeFrom(value);
          } else {
            flightDescriptor_ = value;
          }
        } else {
          flightDescriptorBuilder_.mergeFrom(value);
        }
        if (flightDescriptor_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public Builder clearFlightDescriptor() {
        bitField0_ = (bitField0_ & ~0x00000002);
        flightDescriptor_ = null;
        if (flightDescriptorBuilder_ != null) {
          flightDescriptorBuilder_.dispose();
          flightDescriptorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder getFlightDescriptorBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getFlightDescriptorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder() {
        if (flightDescriptorBuilder_ != null) {
          return flightDescriptorBuilder_.getMessageOrBuilder();
        } else {
          return flightDescriptor_ == null ?
              org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
        }
      }
      /**
       * <pre>
       *
       * The descriptor the client should use on the next try.
       * If unset, the query is complete.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder> 
          getFlightDescriptorFieldBuilder() {
        if (flightDescriptorBuilder_ == null) {
          flightDescriptorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder>(
                  getFlightDescriptor(),
                  getParentForChildren(),
                  isClean());
          flightDescriptor_ = null;
        }
        return flightDescriptorBuilder_;
      }

      private double progress_ ;
      /**
       * <pre>
       *
       * Query progress. If known, must be in [0.0, 1.0] but need not be
       * monotonic or nondecreasing. If unknown, do not set.
       * </pre>
       *
       * <code>optional double progress = 3;</code>
       * @return Whether the progress field is set.
       */
      @java.lang.Override
      public boolean hasProgress() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       *
       * Query progress. If known, must be in [0.0, 1.0] but need not be
       * monotonic or nondecreasing. If unknown, do not set.
       * </pre>
       *
       * <code>optional double progress = 3;</code>
       * @return The progress.
       */
      @java.lang.Override
      public double getProgress() {
        return progress_;
      }
      /**
       * <pre>
       *
       * Query progress. If known, must be in [0.0, 1.0] but need not be
       * monotonic or nondecreasing. If unknown, do not set.
       * </pre>
       *
       * <code>optional double progress = 3;</code>
       * @param value The progress to set.
       * @return This builder for chaining.
       */
      public Builder setProgress(double value) {

        progress_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Query progress. If known, must be in [0.0, 1.0] but need not be
       * monotonic or nondecreasing. If unknown, do not set.
       * </pre>
       *
       * <code>optional double progress = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearProgress() {
        bitField0_ = (bitField0_ & ~0x00000004);
        progress_ = 0D;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp expirationTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> expirationTimeBuilder_;
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       * @return Whether the expirationTime field is set.
       */
      public boolean hasExpirationTime() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       * @return The expirationTime.
       */
      public com.google.protobuf.Timestamp getExpirationTime() {
        if (expirationTimeBuilder_ == null) {
          return expirationTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expirationTime_;
        } else {
          return expirationTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       */
      public Builder setExpirationTime(com.google.protobuf.Timestamp value) {
        if (expirationTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          expirationTime_ = value;
        } else {
          expirationTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       */
      public Builder setExpirationTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (expirationTimeBuilder_ == null) {
          expirationTime_ = builderForValue.build();
        } else {
          expirationTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       */
      public Builder mergeExpirationTime(com.google.protobuf.Timestamp value) {
        if (expirationTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            expirationTime_ != null &&
            expirationTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getExpirationTimeBuilder().mergeFrom(value);
          } else {
            expirationTime_ = value;
          }
        } else {
          expirationTimeBuilder_.mergeFrom(value);
        }
        if (expirationTime_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       */
      public Builder clearExpirationTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        expirationTime_ = null;
        if (expirationTimeBuilder_ != null) {
          expirationTimeBuilder_.dispose();
          expirationTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       */
      public com.google.protobuf.Timestamp.Builder getExpirationTimeBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getExpirationTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getExpirationTimeOrBuilder() {
        if (expirationTimeBuilder_ != null) {
          return expirationTimeBuilder_.getMessageOrBuilder();
        } else {
          return expirationTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : expirationTime_;
        }
      }
      /**
       * <pre>
       *
       * Expiration time for this request. After this passes, the server
       * might not accept the retry descriptor anymore (and the query may
       * be cancelled). This may be updated on a call to PollFlightInfo.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getExpirationTimeFieldBuilder() {
        if (expirationTimeBuilder_ == null) {
          expirationTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getExpirationTime(),
                  getParentForChildren(),
                  isClean());
          expirationTime_ = null;
        }
        return expirationTimeBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.PollInfo)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.PollInfo)
    private static final org.apache.arrow.flight.impl.Flight.PollInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.PollInfo();
    }

    public static org.apache.arrow.flight.impl.Flight.PollInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PollInfo>
        PARSER = new com.google.protobuf.AbstractParser<PollInfo>() {
      @java.lang.Override
      public PollInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.PollInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CancelFlightInfoRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.CancelFlightInfoRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     * @return Whether the info field is set.
     */
    boolean hasInfo();
    /**
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     * @return The info.
     */
    org.apache.arrow.flight.impl.Flight.FlightInfo getInfo();
    /**
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     */
    org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder getInfoOrBuilder();
  }
  /**
   * <pre>
   *
   * The request of the CancelFlightInfo action.
   *
   * The request should be stored in Action.body.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.CancelFlightInfoRequest}
   */
  public static final class CancelFlightInfoRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.CancelFlightInfoRequest)
      CancelFlightInfoRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CancelFlightInfoRequest.newBuilder() to construct.
    private CancelFlightInfoRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CancelFlightInfoRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CancelFlightInfoRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest.class, org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest.Builder.class);
    }

    private int bitField0_;
    public static final int INFO_FIELD_NUMBER = 1;
    private org.apache.arrow.flight.impl.Flight.FlightInfo info_;
    /**
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     * @return Whether the info field is set.
     */
    @java.lang.Override
    public boolean hasInfo() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     * @return The info.
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightInfo getInfo() {
      return info_ == null ? org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance() : info_;
    }
    /**
     * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder getInfoOrBuilder() {
      return info_ == null ? org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance() : info_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getInfo());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getInfo());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest other = (org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest) obj;

      if (hasInfo() != other.hasInfo()) return false;
      if (hasInfo()) {
        if (!getInfo()
            .equals(other.getInfo())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest 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 org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest 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 org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * The request of the CancelFlightInfo action.
     *
     * The request should be stored in Action.body.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.CancelFlightInfoRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.CancelFlightInfoRequest)
        org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest.class, org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getInfoFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        info_ = null;
        if (infoBuilder_ != null) {
          infoBuilder_.dispose();
          infoBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest build() {
        org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest buildPartial() {
        org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest result = new org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.info_ = infoBuilder_ == null
              ? info_
              : infoBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest other) {
        if (other == org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest.getDefaultInstance()) return this;
        if (other.hasInfo()) {
          mergeInfo(other.getInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.apache.arrow.flight.impl.Flight.FlightInfo info_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightInfo, org.apache.arrow.flight.impl.Flight.FlightInfo.Builder, org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder> infoBuilder_;
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       * @return Whether the info field is set.
       */
      public boolean hasInfo() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       * @return The info.
       */
      public org.apache.arrow.flight.impl.Flight.FlightInfo getInfo() {
        if (infoBuilder_ == null) {
          return info_ == null ? org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance() : info_;
        } else {
          return infoBuilder_.getMessage();
        }
      }
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public Builder setInfo(org.apache.arrow.flight.impl.Flight.FlightInfo value) {
        if (infoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          info_ = value;
        } else {
          infoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public Builder setInfo(
          org.apache.arrow.flight.impl.Flight.FlightInfo.Builder builderForValue) {
        if (infoBuilder_ == null) {
          info_ = builderForValue.build();
        } else {
          infoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public Builder mergeInfo(org.apache.arrow.flight.impl.Flight.FlightInfo value) {
        if (infoBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            info_ != null &&
            info_ != org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance()) {
            getInfoBuilder().mergeFrom(value);
          } else {
            info_ = value;
          }
        } else {
          infoBuilder_.mergeFrom(value);
        }
        if (info_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public Builder clearInfo() {
        bitField0_ = (bitField0_ & ~0x00000001);
        info_ = null;
        if (infoBuilder_ != null) {
          infoBuilder_.dispose();
          infoBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightInfo.Builder getInfoBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder getInfoOrBuilder() {
        if (infoBuilder_ != null) {
          return infoBuilder_.getMessageOrBuilder();
        } else {
          return info_ == null ?
              org.apache.arrow.flight.impl.Flight.FlightInfo.getDefaultInstance() : info_;
        }
      }
      /**
       * <code>.arrow.flight.protocol.FlightInfo info = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightInfo, org.apache.arrow.flight.impl.Flight.FlightInfo.Builder, org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder> 
          getInfoFieldBuilder() {
        if (infoBuilder_ == null) {
          infoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.FlightInfo, org.apache.arrow.flight.impl.Flight.FlightInfo.Builder, org.apache.arrow.flight.impl.Flight.FlightInfoOrBuilder>(
                  getInfo(),
                  getParentForChildren(),
                  isClean());
          info_ = null;
        }
        return infoBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.CancelFlightInfoRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.CancelFlightInfoRequest)
    private static final org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest();
    }

    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CancelFlightInfoRequest>
        PARSER = new com.google.protobuf.AbstractParser<CancelFlightInfoRequest>() {
      @java.lang.Override
      public CancelFlightInfoRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.CancelFlightInfoRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CancelFlightInfoResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.CancelFlightInfoResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
     * @return The status.
     */
    org.apache.arrow.flight.impl.Flight.CancelStatus getStatus();
  }
  /**
   * <pre>
   *
   * The result of the CancelFlightInfo action.
   *
   * The result should be stored in Result.body.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.CancelFlightInfoResult}
   */
  public static final class CancelFlightInfoResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.CancelFlightInfoResult)
      CancelFlightInfoResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CancelFlightInfoResult.newBuilder() to construct.
    private CancelFlightInfoResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CancelFlightInfoResult() {
      status_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CancelFlightInfoResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult.class, org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult.Builder.class);
    }

    public static final int STATUS_FIELD_NUMBER = 1;
    private int status_ = 0;
    /**
     * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
     * @return The enum numeric value on the wire for status.
     */
    @java.lang.Override public int getStatusValue() {
      return status_;
    }
    /**
     * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
     * @return The status.
     */
    @java.lang.Override public org.apache.arrow.flight.impl.Flight.CancelStatus getStatus() {
      org.apache.arrow.flight.impl.Flight.CancelStatus result = org.apache.arrow.flight.impl.Flight.CancelStatus.forNumber(status_);
      return result == null ? org.apache.arrow.flight.impl.Flight.CancelStatus.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (status_ != org.apache.arrow.flight.impl.Flight.CancelStatus.CANCEL_STATUS_UNSPECIFIED.getNumber()) {
        output.writeEnum(1, status_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (status_ != org.apache.arrow.flight.impl.Flight.CancelStatus.CANCEL_STATUS_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, status_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult other = (org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult) obj;

      if (status_ != other.status_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult 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 org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult 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 org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * The result of the CancelFlightInfo action.
     *
     * The result should be stored in Result.body.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.CancelFlightInfoResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.CancelFlightInfoResult)
        org.apache.arrow.flight.impl.Flight.CancelFlightInfoResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult.class, org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        status_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CancelFlightInfoResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult build() {
        org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult buildPartial() {
        org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult result = new org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.status_ = status_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult other) {
        if (other == org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult.getDefaultInstance()) return this;
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                status_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int status_ = 0;
      /**
       * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
       * @return The enum numeric value on the wire for status.
       */
      @java.lang.Override public int getStatusValue() {
        return status_;
      }
      /**
       * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        status_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
       * @return The status.
       */
      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CancelStatus getStatus() {
        org.apache.arrow.flight.impl.Flight.CancelStatus result = org.apache.arrow.flight.impl.Flight.CancelStatus.forNumber(status_);
        return result == null ? org.apache.arrow.flight.impl.Flight.CancelStatus.UNRECOGNIZED : result;
      }
      /**
       * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(org.apache.arrow.flight.impl.Flight.CancelStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.CancelStatus status = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000001);
        status_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.CancelFlightInfoResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.CancelFlightInfoResult)
    private static final org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult();
    }

    public static org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CancelFlightInfoResult>
        PARSER = new com.google.protobuf.AbstractParser<CancelFlightInfoResult>() {
      @java.lang.Override
      public CancelFlightInfoResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.CancelFlightInfoResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TicketOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.Ticket)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bytes ticket = 1;</code>
     * @return The ticket.
     */
    com.google.protobuf.ByteString getTicket();
  }
  /**
   * <pre>
   *
   * An opaque identifier that the service can use to retrieve a particular
   * portion of a stream.
   *
   * Tickets are meant to be single use. It is an error/application-defined
   * behavior to reuse a ticket.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.Ticket}
   */
  public static final class Ticket extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.Ticket)
      TicketOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Ticket.newBuilder() to construct.
    private Ticket(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Ticket() {
      ticket_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Ticket();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Ticket_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Ticket_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.Ticket.class, org.apache.arrow.flight.impl.Flight.Ticket.Builder.class);
    }

    public static final int TICKET_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString ticket_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>bytes ticket = 1;</code>
     * @return The ticket.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getTicket() {
      return ticket_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!ticket_.isEmpty()) {
        output.writeBytes(1, ticket_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!ticket_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, ticket_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.Ticket)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.Ticket other = (org.apache.arrow.flight.impl.Flight.Ticket) obj;

      if (!getTicket()
          .equals(other.getTicket())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.Ticket parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Ticket parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Ticket parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Ticket parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Ticket parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Ticket parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Ticket parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Ticket 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 org.apache.arrow.flight.impl.Flight.Ticket parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.Ticket 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 org.apache.arrow.flight.impl.Flight.Ticket parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Ticket parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.Ticket prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * An opaque identifier that the service can use to retrieve a particular
     * portion of a stream.
     *
     * Tickets are meant to be single use. It is an error/application-defined
     * behavior to reuse a ticket.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.Ticket}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.Ticket)
        org.apache.arrow.flight.impl.Flight.TicketOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Ticket_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Ticket_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.Ticket.class, org.apache.arrow.flight.impl.Flight.Ticket.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.Ticket.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ticket_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Ticket_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Ticket getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.Ticket.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Ticket build() {
        org.apache.arrow.flight.impl.Flight.Ticket result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Ticket buildPartial() {
        org.apache.arrow.flight.impl.Flight.Ticket result = new org.apache.arrow.flight.impl.Flight.Ticket(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.Ticket result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ticket_ = ticket_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.Ticket) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.Ticket)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.Ticket other) {
        if (other == org.apache.arrow.flight.impl.Flight.Ticket.getDefaultInstance()) return this;
        if (other.getTicket() != com.google.protobuf.ByteString.EMPTY) {
          setTicket(other.getTicket());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                ticket_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString ticket_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes ticket = 1;</code>
       * @return The ticket.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getTicket() {
        return ticket_;
      }
      /**
       * <code>bytes ticket = 1;</code>
       * @param value The ticket to set.
       * @return This builder for chaining.
       */
      public Builder setTicket(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ticket_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bytes ticket = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTicket() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ticket_ = getDefaultInstance().getTicket();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.Ticket)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.Ticket)
    private static final org.apache.arrow.flight.impl.Flight.Ticket DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.Ticket();
    }

    public static org.apache.arrow.flight.impl.Flight.Ticket getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Ticket>
        PARSER = new com.google.protobuf.AbstractParser<Ticket>() {
      @java.lang.Override
      public Ticket parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.Ticket getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.Location)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string uri = 1;</code>
     * @return The uri.
     */
    java.lang.String getUri();
    /**
     * <code>string uri = 1;</code>
     * @return The bytes for uri.
     */
    com.google.protobuf.ByteString
        getUriBytes();
  }
  /**
   * <pre>
   *
   * A location where a Flight service will accept retrieval of a particular
   * stream given a ticket.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.Location}
   */
  public static final class Location extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.Location)
      LocationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Location.newBuilder() to construct.
    private Location(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Location() {
      uri_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Location();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Location_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Location_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.Location.class, org.apache.arrow.flight.impl.Flight.Location.Builder.class);
    }

    public static final int URI_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object uri_ = "";
    /**
     * <code>string uri = 1;</code>
     * @return The uri.
     */
    @java.lang.Override
    public java.lang.String getUri() {
      java.lang.Object ref = uri_;
      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();
        uri_ = s;
        return s;
      }
    }
    /**
     * <code>string uri = 1;</code>
     * @return The bytes for uri.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUriBytes() {
      java.lang.Object ref = uri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uri_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uri_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uri_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uri_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.Location)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.Location other = (org.apache.arrow.flight.impl.Flight.Location) obj;

      if (!getUri()
          .equals(other.getUri())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.Location parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Location parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Location parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Location parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Location parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.Location parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.Location parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Location 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 org.apache.arrow.flight.impl.Flight.Location parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.Location 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 org.apache.arrow.flight.impl.Flight.Location parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.Location parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.Location prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 location where a Flight service will accept retrieval of a particular
     * stream given a ticket.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.Location}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.Location)
        org.apache.arrow.flight.impl.Flight.LocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Location_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Location_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.Location.class, org.apache.arrow.flight.impl.Flight.Location.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.Location.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        uri_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_Location_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Location getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.Location.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Location build() {
        org.apache.arrow.flight.impl.Flight.Location result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.Location buildPartial() {
        org.apache.arrow.flight.impl.Flight.Location result = new org.apache.arrow.flight.impl.Flight.Location(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.Location result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.uri_ = uri_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.Location) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.Location)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.Location other) {
        if (other == org.apache.arrow.flight.impl.Flight.Location.getDefaultInstance()) return this;
        if (!other.getUri().isEmpty()) {
          uri_ = other.uri_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                uri_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object uri_ = "";
      /**
       * <code>string uri = 1;</code>
       * @return The uri.
       */
      public java.lang.String getUri() {
        java.lang.Object ref = uri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          uri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string uri = 1;</code>
       * @return The bytes for uri.
       */
      public com.google.protobuf.ByteString
          getUriBytes() {
        java.lang.Object ref = uri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string uri = 1;</code>
       * @param value The uri to set.
       * @return This builder for chaining.
       */
      public Builder setUri(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        uri_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string uri = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUri() {
        uri_ = getDefaultInstance().getUri();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string uri = 1;</code>
       * @param value The bytes for uri to set.
       * @return This builder for chaining.
       */
      public Builder setUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        uri_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.Location)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.Location)
    private static final org.apache.arrow.flight.impl.Flight.Location DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.Location();
    }

    public static org.apache.arrow.flight.impl.Flight.Location getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Location>
        PARSER = new com.google.protobuf.AbstractParser<Location>() {
      @java.lang.Override
      public Location parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.Location getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlightEndpointOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.FlightEndpoint)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * Token used to retrieve this stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
     * @return Whether the ticket field is set.
     */
    boolean hasTicket();
    /**
     * <pre>
     *
     * Token used to retrieve this stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
     * @return The ticket.
     */
    org.apache.arrow.flight.impl.Flight.Ticket getTicket();
    /**
     * <pre>
     *
     * Token used to retrieve this stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
     */
    org.apache.arrow.flight.impl.Flight.TicketOrBuilder getTicketOrBuilder();

    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    java.util.List<org.apache.arrow.flight.impl.Flight.Location> 
        getLocationList();
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    org.apache.arrow.flight.impl.Flight.Location getLocation(int index);
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    int getLocationCount();
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    java.util.List<? extends org.apache.arrow.flight.impl.Flight.LocationOrBuilder> 
        getLocationOrBuilderList();
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    org.apache.arrow.flight.impl.Flight.LocationOrBuilder getLocationOrBuilder(
        int index);

    /**
     * <pre>
     *
     * Expiration time of this stream. If present, clients may assume
     * they can retry DoGet requests. Otherwise, it is
     * application-defined whether DoGet requests may be retried.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
     * @return Whether the expirationTime field is set.
     */
    boolean hasExpirationTime();
    /**
     * <pre>
     *
     * Expiration time of this stream. If present, clients may assume
     * they can retry DoGet requests. Otherwise, it is
     * application-defined whether DoGet requests may be retried.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
     * @return The expirationTime.
     */
    com.google.protobuf.Timestamp getExpirationTime();
    /**
     * <pre>
     *
     * Expiration time of this stream. If present, clients may assume
     * they can retry DoGet requests. Otherwise, it is
     * application-defined whether DoGet requests may be retried.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
     */
    com.google.protobuf.TimestampOrBuilder getExpirationTimeOrBuilder();

    /**
     * <pre>
     *
     * Application-defined metadata.
     *
     * There is no inherent or required relationship between this
     * and the app_metadata fields in the FlightInfo or resulting
     * FlightData messages. Since this metadata is application-defined,
     * a given application could define there to be a relationship,
     * but there is none required by the spec.
     * </pre>
     *
     * <code>bytes app_metadata = 4;</code>
     * @return The appMetadata.
     */
    com.google.protobuf.ByteString getAppMetadata();
  }
  /**
   * <pre>
   *
   * A particular stream or split associated with a flight.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.FlightEndpoint}
   */
  public static final class FlightEndpoint extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.FlightEndpoint)
      FlightEndpointOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FlightEndpoint.newBuilder() to construct.
    private FlightEndpoint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FlightEndpoint() {
      location_ = java.util.Collections.emptyList();
      appMetadata_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FlightEndpoint();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightEndpoint_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightEndpoint_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.FlightEndpoint.class, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder.class);
    }

    private int bitField0_;
    public static final int TICKET_FIELD_NUMBER = 1;
    private org.apache.arrow.flight.impl.Flight.Ticket ticket_;
    /**
     * <pre>
     *
     * Token used to retrieve this stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
     * @return Whether the ticket field is set.
     */
    @java.lang.Override
    public boolean hasTicket() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * Token used to retrieve this stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
     * @return The ticket.
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.Ticket getTicket() {
      return ticket_ == null ? org.apache.arrow.flight.impl.Flight.Ticket.getDefaultInstance() : ticket_;
    }
    /**
     * <pre>
     *
     * Token used to retrieve this stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.TicketOrBuilder getTicketOrBuilder() {
      return ticket_ == null ? org.apache.arrow.flight.impl.Flight.Ticket.getDefaultInstance() : ticket_;
    }

    public static final int LOCATION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<org.apache.arrow.flight.impl.Flight.Location> location_;
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    @java.lang.Override
    public java.util.List<org.apache.arrow.flight.impl.Flight.Location> getLocationList() {
      return location_;
    }
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends org.apache.arrow.flight.impl.Flight.LocationOrBuilder> 
        getLocationOrBuilderList() {
      return location_;
    }
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    @java.lang.Override
    public int getLocationCount() {
      return location_.size();
    }
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.Location getLocation(int index) {
      return location_.get(index);
    }
    /**
     * <pre>
     *
     * A list of URIs where this ticket can be redeemed via DoGet().
     *
     * If the list is empty, the expectation is that the ticket can only
     * be redeemed on the current service where the ticket was
     * generated.
     *
     * If the list is not empty, the expectation is that the ticket can be
     * redeemed at any of the locations, and that the data returned will be
     * equivalent. In this case, the ticket may only be redeemed at one of the
     * given locations, and not (necessarily) on the current service. If one
     * of the given locations is "arrow-flight-reuse-connection://?", the
     * client may redeem the ticket on the service where the ticket was
     * generated (i.e., the same as above), in addition to the other
     * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
     * or 'scheme://' are not accepted by Java's java.net.URI.)
     *
     * In other words, an application can use multiple locations to
     * represent redundant and/or load balanced services.
     * </pre>
     *
     * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.LocationOrBuilder getLocationOrBuilder(
        int index) {
      return location_.get(index);
    }

    public static final int EXPIRATION_TIME_FIELD_NUMBER = 3;
    private com.google.protobuf.Timestamp expirationTime_;
    /**
     * <pre>
     *
     * Expiration time of this stream. If present, clients may assume
     * they can retry DoGet requests. Otherwise, it is
     * application-defined whether DoGet requests may be retried.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
     * @return Whether the expirationTime field is set.
     */
    @java.lang.Override
    public boolean hasExpirationTime() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *
     * Expiration time of this stream. If present, clients may assume
     * they can retry DoGet requests. Otherwise, it is
     * application-defined whether DoGet requests may be retried.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
     * @return The expirationTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getExpirationTime() {
      return expirationTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expirationTime_;
    }
    /**
     * <pre>
     *
     * Expiration time of this stream. If present, clients may assume
     * they can retry DoGet requests. Otherwise, it is
     * application-defined whether DoGet requests may be retried.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getExpirationTimeOrBuilder() {
      return expirationTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expirationTime_;
    }

    public static final int APP_METADATA_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString appMetadata_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     *
     * Application-defined metadata.
     *
     * There is no inherent or required relationship between this
     * and the app_metadata fields in the FlightInfo or resulting
     * FlightData messages. Since this metadata is application-defined,
     * a given application could define there to be a relationship,
     * but there is none required by the spec.
     * </pre>
     *
     * <code>bytes app_metadata = 4;</code>
     * @return The appMetadata.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getAppMetadata() {
      return appMetadata_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTicket());
      }
      for (int i = 0; i < location_.size(); i++) {
        output.writeMessage(2, location_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getExpirationTime());
      }
      if (!appMetadata_.isEmpty()) {
        output.writeBytes(4, appMetadata_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTicket());
      }
      for (int i = 0; i < location_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, location_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getExpirationTime());
      }
      if (!appMetadata_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, appMetadata_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.FlightEndpoint)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.FlightEndpoint other = (org.apache.arrow.flight.impl.Flight.FlightEndpoint) obj;

      if (hasTicket() != other.hasTicket()) return false;
      if (hasTicket()) {
        if (!getTicket()
            .equals(other.getTicket())) return false;
      }
      if (!getLocationList()
          .equals(other.getLocationList())) return false;
      if (hasExpirationTime() != other.hasExpirationTime()) return false;
      if (hasExpirationTime()) {
        if (!getExpirationTime()
            .equals(other.getExpirationTime())) return false;
      }
      if (!getAppMetadata()
          .equals(other.getAppMetadata())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTicket()) {
        hash = (37 * hash) + TICKET_FIELD_NUMBER;
        hash = (53 * hash) + getTicket().hashCode();
      }
      if (getLocationCount() > 0) {
        hash = (37 * hash) + LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getLocationList().hashCode();
      }
      if (hasExpirationTime()) {
        hash = (37 * hash) + EXPIRATION_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getExpirationTime().hashCode();
      }
      hash = (37 * hash) + APP_METADATA_FIELD_NUMBER;
      hash = (53 * hash) + getAppMetadata().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint 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 org.apache.arrow.flight.impl.Flight.FlightEndpoint parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint 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 org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.FlightEndpoint prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 particular stream or split associated with a flight.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.FlightEndpoint}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.FlightEndpoint)
        org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightEndpoint_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightEndpoint_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.FlightEndpoint.class, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.FlightEndpoint.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTicketFieldBuilder();
          getLocationFieldBuilder();
          getExpirationTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ticket_ = null;
        if (ticketBuilder_ != null) {
          ticketBuilder_.dispose();
          ticketBuilder_ = null;
        }
        if (locationBuilder_ == null) {
          location_ = java.util.Collections.emptyList();
        } else {
          location_ = null;
          locationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        expirationTime_ = null;
        if (expirationTimeBuilder_ != null) {
          expirationTimeBuilder_.dispose();
          expirationTimeBuilder_ = null;
        }
        appMetadata_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightEndpoint_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint build() {
        org.apache.arrow.flight.impl.Flight.FlightEndpoint result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint buildPartial() {
        org.apache.arrow.flight.impl.Flight.FlightEndpoint result = new org.apache.arrow.flight.impl.Flight.FlightEndpoint(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(org.apache.arrow.flight.impl.Flight.FlightEndpoint result) {
        if (locationBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            location_ = java.util.Collections.unmodifiableList(location_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.location_ = location_;
        } else {
          result.location_ = locationBuilder_.build();
        }
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.FlightEndpoint result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ticket_ = ticketBuilder_ == null
              ? ticket_
              : ticketBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.expirationTime_ = expirationTimeBuilder_ == null
              ? expirationTime_
              : expirationTimeBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.appMetadata_ = appMetadata_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.FlightEndpoint) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.FlightEndpoint)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.FlightEndpoint other) {
        if (other == org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance()) return this;
        if (other.hasTicket()) {
          mergeTicket(other.getTicket());
        }
        if (locationBuilder_ == null) {
          if (!other.location_.isEmpty()) {
            if (location_.isEmpty()) {
              location_ = other.location_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureLocationIsMutable();
              location_.addAll(other.location_);
            }
            onChanged();
          }
        } else {
          if (!other.location_.isEmpty()) {
            if (locationBuilder_.isEmpty()) {
              locationBuilder_.dispose();
              locationBuilder_ = null;
              location_ = other.location_;
              bitField0_ = (bitField0_ & ~0x00000002);
              locationBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLocationFieldBuilder() : null;
            } else {
              locationBuilder_.addAllMessages(other.location_);
            }
          }
        }
        if (other.hasExpirationTime()) {
          mergeExpirationTime(other.getExpirationTime());
        }
        if (other.getAppMetadata() != com.google.protobuf.ByteString.EMPTY) {
          setAppMetadata(other.getAppMetadata());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getTicketFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                org.apache.arrow.flight.impl.Flight.Location m =
                    input.readMessage(
                        org.apache.arrow.flight.impl.Flight.Location.parser(),
                        extensionRegistry);
                if (locationBuilder_ == null) {
                  ensureLocationIsMutable();
                  location_.add(m);
                } else {
                  locationBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getExpirationTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                appMetadata_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.apache.arrow.flight.impl.Flight.Ticket ticket_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.Ticket, org.apache.arrow.flight.impl.Flight.Ticket.Builder, org.apache.arrow.flight.impl.Flight.TicketOrBuilder> ticketBuilder_;
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       * @return Whether the ticket field is set.
       */
      public boolean hasTicket() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       * @return The ticket.
       */
      public org.apache.arrow.flight.impl.Flight.Ticket getTicket() {
        if (ticketBuilder_ == null) {
          return ticket_ == null ? org.apache.arrow.flight.impl.Flight.Ticket.getDefaultInstance() : ticket_;
        } else {
          return ticketBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       */
      public Builder setTicket(org.apache.arrow.flight.impl.Flight.Ticket value) {
        if (ticketBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ticket_ = value;
        } else {
          ticketBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       */
      public Builder setTicket(
          org.apache.arrow.flight.impl.Flight.Ticket.Builder builderForValue) {
        if (ticketBuilder_ == null) {
          ticket_ = builderForValue.build();
        } else {
          ticketBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       */
      public Builder mergeTicket(org.apache.arrow.flight.impl.Flight.Ticket value) {
        if (ticketBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            ticket_ != null &&
            ticket_ != org.apache.arrow.flight.impl.Flight.Ticket.getDefaultInstance()) {
            getTicketBuilder().mergeFrom(value);
          } else {
            ticket_ = value;
          }
        } else {
          ticketBuilder_.mergeFrom(value);
        }
        if (ticket_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       */
      public Builder clearTicket() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ticket_ = null;
        if (ticketBuilder_ != null) {
          ticketBuilder_.dispose();
          ticketBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.Ticket.Builder getTicketBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTicketFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.TicketOrBuilder getTicketOrBuilder() {
        if (ticketBuilder_ != null) {
          return ticketBuilder_.getMessageOrBuilder();
        } else {
          return ticket_ == null ?
              org.apache.arrow.flight.impl.Flight.Ticket.getDefaultInstance() : ticket_;
        }
      }
      /**
       * <pre>
       *
       * Token used to retrieve this stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.Ticket ticket = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.Ticket, org.apache.arrow.flight.impl.Flight.Ticket.Builder, org.apache.arrow.flight.impl.Flight.TicketOrBuilder> 
          getTicketFieldBuilder() {
        if (ticketBuilder_ == null) {
          ticketBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.Ticket, org.apache.arrow.flight.impl.Flight.Ticket.Builder, org.apache.arrow.flight.impl.Flight.TicketOrBuilder>(
                  getTicket(),
                  getParentForChildren(),
                  isClean());
          ticket_ = null;
        }
        return ticketBuilder_;
      }

      private java.util.List<org.apache.arrow.flight.impl.Flight.Location> location_ =
        java.util.Collections.emptyList();
      private void ensureLocationIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          location_ = new java.util.ArrayList<org.apache.arrow.flight.impl.Flight.Location>(location_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.Location, org.apache.arrow.flight.impl.Flight.Location.Builder, org.apache.arrow.flight.impl.Flight.LocationOrBuilder> locationBuilder_;

      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public java.util.List<org.apache.arrow.flight.impl.Flight.Location> getLocationList() {
        if (locationBuilder_ == null) {
          return java.util.Collections.unmodifiableList(location_);
        } else {
          return locationBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public int getLocationCount() {
        if (locationBuilder_ == null) {
          return location_.size();
        } else {
          return locationBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.Location getLocation(int index) {
        if (locationBuilder_ == null) {
          return location_.get(index);
        } else {
          return locationBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder setLocation(
          int index, org.apache.arrow.flight.impl.Flight.Location value) {
        if (locationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLocationIsMutable();
          location_.set(index, value);
          onChanged();
        } else {
          locationBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder setLocation(
          int index, org.apache.arrow.flight.impl.Flight.Location.Builder builderForValue) {
        if (locationBuilder_ == null) {
          ensureLocationIsMutable();
          location_.set(index, builderForValue.build());
          onChanged();
        } else {
          locationBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder addLocation(org.apache.arrow.flight.impl.Flight.Location value) {
        if (locationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLocationIsMutable();
          location_.add(value);
          onChanged();
        } else {
          locationBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder addLocation(
          int index, org.apache.arrow.flight.impl.Flight.Location value) {
        if (locationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLocationIsMutable();
          location_.add(index, value);
          onChanged();
        } else {
          locationBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder addLocation(
          org.apache.arrow.flight.impl.Flight.Location.Builder builderForValue) {
        if (locationBuilder_ == null) {
          ensureLocationIsMutable();
          location_.add(builderForValue.build());
          onChanged();
        } else {
          locationBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder addLocation(
          int index, org.apache.arrow.flight.impl.Flight.Location.Builder builderForValue) {
        if (locationBuilder_ == null) {
          ensureLocationIsMutable();
          location_.add(index, builderForValue.build());
          onChanged();
        } else {
          locationBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder addAllLocation(
          java.lang.Iterable<? extends org.apache.arrow.flight.impl.Flight.Location> values) {
        if (locationBuilder_ == null) {
          ensureLocationIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, location_);
          onChanged();
        } else {
          locationBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder clearLocation() {
        if (locationBuilder_ == null) {
          location_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          locationBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public Builder removeLocation(int index) {
        if (locationBuilder_ == null) {
          ensureLocationIsMutable();
          location_.remove(index);
          onChanged();
        } else {
          locationBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.Location.Builder getLocationBuilder(
          int index) {
        return getLocationFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.LocationOrBuilder getLocationOrBuilder(
          int index) {
        if (locationBuilder_ == null) {
          return location_.get(index);  } else {
          return locationBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public java.util.List<? extends org.apache.arrow.flight.impl.Flight.LocationOrBuilder> 
           getLocationOrBuilderList() {
        if (locationBuilder_ != null) {
          return locationBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(location_);
        }
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.Location.Builder addLocationBuilder() {
        return getLocationFieldBuilder().addBuilder(
            org.apache.arrow.flight.impl.Flight.Location.getDefaultInstance());
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public org.apache.arrow.flight.impl.Flight.Location.Builder addLocationBuilder(
          int index) {
        return getLocationFieldBuilder().addBuilder(
            index, org.apache.arrow.flight.impl.Flight.Location.getDefaultInstance());
      }
      /**
       * <pre>
       *
       * A list of URIs where this ticket can be redeemed via DoGet().
       *
       * If the list is empty, the expectation is that the ticket can only
       * be redeemed on the current service where the ticket was
       * generated.
       *
       * If the list is not empty, the expectation is that the ticket can be
       * redeemed at any of the locations, and that the data returned will be
       * equivalent. In this case, the ticket may only be redeemed at one of the
       * given locations, and not (necessarily) on the current service. If one
       * of the given locations is "arrow-flight-reuse-connection://?", the
       * client may redeem the ticket on the service where the ticket was
       * generated (i.e., the same as above), in addition to the other
       * locations. (This URI was chosen to maximize compatibility, as 'scheme:'
       * or 'scheme://' are not accepted by Java's java.net.URI.)
       *
       * In other words, an application can use multiple locations to
       * represent redundant and/or load balanced services.
       * </pre>
       *
       * <code>repeated .arrow.flight.protocol.Location location = 2;</code>
       */
      public java.util.List<org.apache.arrow.flight.impl.Flight.Location.Builder> 
           getLocationBuilderList() {
        return getLocationFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.Location, org.apache.arrow.flight.impl.Flight.Location.Builder, org.apache.arrow.flight.impl.Flight.LocationOrBuilder> 
          getLocationFieldBuilder() {
        if (locationBuilder_ == null) {
          locationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.Location, org.apache.arrow.flight.impl.Flight.Location.Builder, org.apache.arrow.flight.impl.Flight.LocationOrBuilder>(
                  location_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          location_ = null;
        }
        return locationBuilder_;
      }

      private com.google.protobuf.Timestamp expirationTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> expirationTimeBuilder_;
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       * @return Whether the expirationTime field is set.
       */
      public boolean hasExpirationTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       * @return The expirationTime.
       */
      public com.google.protobuf.Timestamp getExpirationTime() {
        if (expirationTimeBuilder_ == null) {
          return expirationTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expirationTime_;
        } else {
          return expirationTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       */
      public Builder setExpirationTime(com.google.protobuf.Timestamp value) {
        if (expirationTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          expirationTime_ = value;
        } else {
          expirationTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       */
      public Builder setExpirationTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (expirationTimeBuilder_ == null) {
          expirationTime_ = builderForValue.build();
        } else {
          expirationTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       */
      public Builder mergeExpirationTime(com.google.protobuf.Timestamp value) {
        if (expirationTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            expirationTime_ != null &&
            expirationTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getExpirationTimeBuilder().mergeFrom(value);
          } else {
            expirationTime_ = value;
          }
        } else {
          expirationTimeBuilder_.mergeFrom(value);
        }
        if (expirationTime_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       */
      public Builder clearExpirationTime() {
        bitField0_ = (bitField0_ & ~0x00000004);
        expirationTime_ = null;
        if (expirationTimeBuilder_ != null) {
          expirationTimeBuilder_.dispose();
          expirationTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       */
      public com.google.protobuf.Timestamp.Builder getExpirationTimeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getExpirationTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getExpirationTimeOrBuilder() {
        if (expirationTimeBuilder_ != null) {
          return expirationTimeBuilder_.getMessageOrBuilder();
        } else {
          return expirationTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : expirationTime_;
        }
      }
      /**
       * <pre>
       *
       * Expiration time of this stream. If present, clients may assume
       * they can retry DoGet requests. Otherwise, it is
       * application-defined whether DoGet requests may be retried.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expiration_time = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getExpirationTimeFieldBuilder() {
        if (expirationTimeBuilder_ == null) {
          expirationTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getExpirationTime(),
                  getParentForChildren(),
                  isClean());
          expirationTime_ = null;
        }
        return expirationTimeBuilder_;
      }

      private com.google.protobuf.ByteString appMetadata_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *
       * Application-defined metadata.
       *
       * There is no inherent or required relationship between this
       * and the app_metadata fields in the FlightInfo or resulting
       * FlightData messages. Since this metadata is application-defined,
       * a given application could define there to be a relationship,
       * but there is none required by the spec.
       * </pre>
       *
       * <code>bytes app_metadata = 4;</code>
       * @return The appMetadata.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getAppMetadata() {
        return appMetadata_;
      }
      /**
       * <pre>
       *
       * Application-defined metadata.
       *
       * There is no inherent or required relationship between this
       * and the app_metadata fields in the FlightInfo or resulting
       * FlightData messages. Since this metadata is application-defined,
       * a given application could define there to be a relationship,
       * but there is none required by the spec.
       * </pre>
       *
       * <code>bytes app_metadata = 4;</code>
       * @param value The appMetadata to set.
       * @return This builder for chaining.
       */
      public Builder setAppMetadata(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        appMetadata_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Application-defined metadata.
       *
       * There is no inherent or required relationship between this
       * and the app_metadata fields in the FlightInfo or resulting
       * FlightData messages. Since this metadata is application-defined,
       * a given application could define there to be a relationship,
       * but there is none required by the spec.
       * </pre>
       *
       * <code>bytes app_metadata = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppMetadata() {
        bitField0_ = (bitField0_ & ~0x00000008);
        appMetadata_ = getDefaultInstance().getAppMetadata();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.FlightEndpoint)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.FlightEndpoint)
    private static final org.apache.arrow.flight.impl.Flight.FlightEndpoint DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.FlightEndpoint();
    }

    public static org.apache.arrow.flight.impl.Flight.FlightEndpoint getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlightEndpoint>
        PARSER = new com.google.protobuf.AbstractParser<FlightEndpoint>() {
      @java.lang.Override
      public FlightEndpoint parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightEndpoint getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RenewFlightEndpointRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.RenewFlightEndpointRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
     * @return Whether the endpoint field is set.
     */
    boolean hasEndpoint();
    /**
     * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
     * @return The endpoint.
     */
    org.apache.arrow.flight.impl.Flight.FlightEndpoint getEndpoint();
    /**
     * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
     */
    org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder getEndpointOrBuilder();
  }
  /**
   * <pre>
   *
   * The request of the RenewFlightEndpoint action.
   *
   * The request should be stored in Action.body.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.RenewFlightEndpointRequest}
   */
  public static final class RenewFlightEndpointRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.RenewFlightEndpointRequest)
      RenewFlightEndpointRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RenewFlightEndpointRequest.newBuilder() to construct.
    private RenewFlightEndpointRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RenewFlightEndpointRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new RenewFlightEndpointRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest.class, org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest.Builder.class);
    }

    private int bitField0_;
    public static final int ENDPOINT_FIELD_NUMBER = 1;
    private org.apache.arrow.flight.impl.Flight.FlightEndpoint endpoint_;
    /**
     * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
     * @return Whether the endpoint field is set.
     */
    @java.lang.Override
    public boolean hasEndpoint() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
     * @return The endpoint.
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightEndpoint getEndpoint() {
      return endpoint_ == null ? org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance() : endpoint_;
    }
    /**
     * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder getEndpointOrBuilder() {
      return endpoint_ == null ? org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance() : endpoint_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getEndpoint());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEndpoint());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest other = (org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest) obj;

      if (hasEndpoint() != other.hasEndpoint()) return false;
      if (hasEndpoint()) {
        if (!getEndpoint()
            .equals(other.getEndpoint())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest 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 org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest 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 org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * The request of the RenewFlightEndpoint action.
     *
     * The request should be stored in Action.body.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.RenewFlightEndpointRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.RenewFlightEndpointRequest)
        org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest.class, org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getEndpointFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        endpoint_ = null;
        if (endpointBuilder_ != null) {
          endpointBuilder_.dispose();
          endpointBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest build() {
        org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest buildPartial() {
        org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest result = new org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.endpoint_ = endpointBuilder_ == null
              ? endpoint_
              : endpointBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest other) {
        if (other == org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest.getDefaultInstance()) return this;
        if (other.hasEndpoint()) {
          mergeEndpoint(other.getEndpoint());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getEndpointFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.apache.arrow.flight.impl.Flight.FlightEndpoint endpoint_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightEndpoint, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder, org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder> endpointBuilder_;
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       * @return Whether the endpoint field is set.
       */
      public boolean hasEndpoint() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       * @return The endpoint.
       */
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint getEndpoint() {
        if (endpointBuilder_ == null) {
          return endpoint_ == null ? org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance() : endpoint_;
        } else {
          return endpointBuilder_.getMessage();
        }
      }
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       */
      public Builder setEndpoint(org.apache.arrow.flight.impl.Flight.FlightEndpoint value) {
        if (endpointBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endpoint_ = value;
        } else {
          endpointBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       */
      public Builder setEndpoint(
          org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder builderForValue) {
        if (endpointBuilder_ == null) {
          endpoint_ = builderForValue.build();
        } else {
          endpointBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       */
      public Builder mergeEndpoint(org.apache.arrow.flight.impl.Flight.FlightEndpoint value) {
        if (endpointBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            endpoint_ != null &&
            endpoint_ != org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance()) {
            getEndpointBuilder().mergeFrom(value);
          } else {
            endpoint_ = value;
          }
        } else {
          endpointBuilder_.mergeFrom(value);
        }
        if (endpoint_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       */
      public Builder clearEndpoint() {
        bitField0_ = (bitField0_ & ~0x00000001);
        endpoint_ = null;
        if (endpointBuilder_ != null) {
          endpointBuilder_.dispose();
          endpointBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder getEndpointBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getEndpointFieldBuilder().getBuilder();
      }
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder getEndpointOrBuilder() {
        if (endpointBuilder_ != null) {
          return endpointBuilder_.getMessageOrBuilder();
        } else {
          return endpoint_ == null ?
              org.apache.arrow.flight.impl.Flight.FlightEndpoint.getDefaultInstance() : endpoint_;
        }
      }
      /**
       * <code>.arrow.flight.protocol.FlightEndpoint endpoint = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightEndpoint, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder, org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder> 
          getEndpointFieldBuilder() {
        if (endpointBuilder_ == null) {
          endpointBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.FlightEndpoint, org.apache.arrow.flight.impl.Flight.FlightEndpoint.Builder, org.apache.arrow.flight.impl.Flight.FlightEndpointOrBuilder>(
                  getEndpoint(),
                  getParentForChildren(),
                  isClean());
          endpoint_ = null;
        }
        return endpointBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.RenewFlightEndpointRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.RenewFlightEndpointRequest)
    private static final org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest();
    }

    public static org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RenewFlightEndpointRequest>
        PARSER = new com.google.protobuf.AbstractParser<RenewFlightEndpointRequest>() {
      @java.lang.Override
      public RenewFlightEndpointRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.RenewFlightEndpointRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FlightDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.FlightData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *
     * The descriptor of the data. This is only relevant when a client is
     * starting a new DoPut stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
     * @return Whether the flightDescriptor field is set.
     */
    boolean hasFlightDescriptor();
    /**
     * <pre>
     *
     * The descriptor of the data. This is only relevant when a client is
     * starting a new DoPut stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
     * @return The flightDescriptor.
     */
    org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor();
    /**
     * <pre>
     *
     * The descriptor of the data. This is only relevant when a client is
     * starting a new DoPut stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
     */
    org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder();

    /**
     * <pre>
     *
     * Header for message data as described in Message.fbs::Message.
     * </pre>
     *
     * <code>bytes data_header = 2;</code>
     * @return The dataHeader.
     */
    com.google.protobuf.ByteString getDataHeader();

    /**
     * <pre>
     *
     * Application-defined metadata.
     * </pre>
     *
     * <code>bytes app_metadata = 3;</code>
     * @return The appMetadata.
     */
    com.google.protobuf.ByteString getAppMetadata();

    /**
     * <pre>
     *
     * The actual batch of Arrow data. Preferably handled with minimal-copies
     * coming last in the definition to help with sidecar patterns (it is
     * expected that some implementations will fetch this field off the wire
     * with specialized code to avoid extra memory copies).
     * </pre>
     *
     * <code>bytes data_body = 1000;</code>
     * @return The dataBody.
     */
    com.google.protobuf.ByteString getDataBody();
  }
  /**
   * <pre>
   *
   * A batch of Arrow data as part of a stream of batches.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.FlightData}
   */
  public static final class FlightData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.FlightData)
      FlightDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FlightData.newBuilder() to construct.
    private FlightData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FlightData() {
      dataHeader_ = com.google.protobuf.ByteString.EMPTY;
      appMetadata_ = com.google.protobuf.ByteString.EMPTY;
      dataBody_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new FlightData();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.FlightData.class, org.apache.arrow.flight.impl.Flight.FlightData.Builder.class);
    }

    private int bitField0_;
    public static final int FLIGHT_DESCRIPTOR_FIELD_NUMBER = 1;
    private org.apache.arrow.flight.impl.Flight.FlightDescriptor flightDescriptor_;
    /**
     * <pre>
     *
     * The descriptor of the data. This is only relevant when a client is
     * starting a new DoPut stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
     * @return Whether the flightDescriptor field is set.
     */
    @java.lang.Override
    public boolean hasFlightDescriptor() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     *
     * The descriptor of the data. This is only relevant when a client is
     * starting a new DoPut stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
     * @return The flightDescriptor.
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor() {
      return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
    }
    /**
     * <pre>
     *
     * The descriptor of the data. This is only relevant when a client is
     * starting a new DoPut stream.
     * </pre>
     *
     * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder() {
      return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
    }

    public static final int DATA_HEADER_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString dataHeader_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     *
     * Header for message data as described in Message.fbs::Message.
     * </pre>
     *
     * <code>bytes data_header = 2;</code>
     * @return The dataHeader.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDataHeader() {
      return dataHeader_;
    }

    public static final int APP_METADATA_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString appMetadata_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     *
     * Application-defined metadata.
     * </pre>
     *
     * <code>bytes app_metadata = 3;</code>
     * @return The appMetadata.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getAppMetadata() {
      return appMetadata_;
    }

    public static final int DATA_BODY_FIELD_NUMBER = 1000;
    private com.google.protobuf.ByteString dataBody_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     *
     * The actual batch of Arrow data. Preferably handled with minimal-copies
     * coming last in the definition to help with sidecar patterns (it is
     * expected that some implementations will fetch this field off the wire
     * with specialized code to avoid extra memory copies).
     * </pre>
     *
     * <code>bytes data_body = 1000;</code>
     * @return The dataBody.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDataBody() {
      return dataBody_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getFlightDescriptor());
      }
      if (!dataHeader_.isEmpty()) {
        output.writeBytes(2, dataHeader_);
      }
      if (!appMetadata_.isEmpty()) {
        output.writeBytes(3, appMetadata_);
      }
      if (!dataBody_.isEmpty()) {
        output.writeBytes(1000, dataBody_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFlightDescriptor());
      }
      if (!dataHeader_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, dataHeader_);
      }
      if (!appMetadata_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, appMetadata_);
      }
      if (!dataBody_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1000, dataBody_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.FlightData)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.FlightData other = (org.apache.arrow.flight.impl.Flight.FlightData) obj;

      if (hasFlightDescriptor() != other.hasFlightDescriptor()) return false;
      if (hasFlightDescriptor()) {
        if (!getFlightDescriptor()
            .equals(other.getFlightDescriptor())) return false;
      }
      if (!getDataHeader()
          .equals(other.getDataHeader())) return false;
      if (!getAppMetadata()
          .equals(other.getAppMetadata())) return false;
      if (!getDataBody()
          .equals(other.getDataBody())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFlightDescriptor()) {
        hash = (37 * hash) + FLIGHT_DESCRIPTOR_FIELD_NUMBER;
        hash = (53 * hash) + getFlightDescriptor().hashCode();
      }
      hash = (37 * hash) + DATA_HEADER_FIELD_NUMBER;
      hash = (53 * hash) + getDataHeader().hashCode();
      hash = (37 * hash) + APP_METADATA_FIELD_NUMBER;
      hash = (53 * hash) + getAppMetadata().hashCode();
      hash = (37 * hash) + DATA_BODY_FIELD_NUMBER;
      hash = (53 * hash) + getDataBody().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.FlightData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightData 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 org.apache.arrow.flight.impl.Flight.FlightData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.FlightData 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 org.apache.arrow.flight.impl.Flight.FlightData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.FlightData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.FlightData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 batch of Arrow data as part of a stream of batches.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.FlightData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.FlightData)
        org.apache.arrow.flight.impl.Flight.FlightDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.FlightData.class, org.apache.arrow.flight.impl.Flight.FlightData.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.FlightData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFlightDescriptorFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        flightDescriptor_ = null;
        if (flightDescriptorBuilder_ != null) {
          flightDescriptorBuilder_.dispose();
          flightDescriptorBuilder_ = null;
        }
        dataHeader_ = com.google.protobuf.ByteString.EMPTY;
        appMetadata_ = com.google.protobuf.ByteString.EMPTY;
        dataBody_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_FlightData_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightData getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.FlightData.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightData build() {
        org.apache.arrow.flight.impl.Flight.FlightData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.FlightData buildPartial() {
        org.apache.arrow.flight.impl.Flight.FlightData result = new org.apache.arrow.flight.impl.Flight.FlightData(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.FlightData result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.flightDescriptor_ = flightDescriptorBuilder_ == null
              ? flightDescriptor_
              : flightDescriptorBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.dataHeader_ = dataHeader_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.appMetadata_ = appMetadata_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.dataBody_ = dataBody_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.FlightData) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.FlightData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.FlightData other) {
        if (other == org.apache.arrow.flight.impl.Flight.FlightData.getDefaultInstance()) return this;
        if (other.hasFlightDescriptor()) {
          mergeFlightDescriptor(other.getFlightDescriptor());
        }
        if (other.getDataHeader() != com.google.protobuf.ByteString.EMPTY) {
          setDataHeader(other.getDataHeader());
        }
        if (other.getAppMetadata() != com.google.protobuf.ByteString.EMPTY) {
          setAppMetadata(other.getAppMetadata());
        }
        if (other.getDataBody() != com.google.protobuf.ByteString.EMPTY) {
          setDataBody(other.getDataBody());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFlightDescriptorFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                dataHeader_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                appMetadata_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 8002: {
                dataBody_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 8002
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private org.apache.arrow.flight.impl.Flight.FlightDescriptor flightDescriptor_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder> flightDescriptorBuilder_;
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       * @return Whether the flightDescriptor field is set.
       */
      public boolean hasFlightDescriptor() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       * @return The flightDescriptor.
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor getFlightDescriptor() {
        if (flightDescriptorBuilder_ == null) {
          return flightDescriptor_ == null ? org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
        } else {
          return flightDescriptorBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       */
      public Builder setFlightDescriptor(org.apache.arrow.flight.impl.Flight.FlightDescriptor value) {
        if (flightDescriptorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          flightDescriptor_ = value;
        } else {
          flightDescriptorBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       */
      public Builder setFlightDescriptor(
          org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder builderForValue) {
        if (flightDescriptorBuilder_ == null) {
          flightDescriptor_ = builderForValue.build();
        } else {
          flightDescriptorBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       */
      public Builder mergeFlightDescriptor(org.apache.arrow.flight.impl.Flight.FlightDescriptor value) {
        if (flightDescriptorBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            flightDescriptor_ != null &&
            flightDescriptor_ != org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance()) {
            getFlightDescriptorBuilder().mergeFrom(value);
          } else {
            flightDescriptor_ = value;
          }
        } else {
          flightDescriptorBuilder_.mergeFrom(value);
        }
        if (flightDescriptor_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       */
      public Builder clearFlightDescriptor() {
        bitField0_ = (bitField0_ & ~0x00000001);
        flightDescriptor_ = null;
        if (flightDescriptorBuilder_ != null) {
          flightDescriptorBuilder_.dispose();
          flightDescriptorBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder getFlightDescriptorBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFlightDescriptorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder getFlightDescriptorOrBuilder() {
        if (flightDescriptorBuilder_ != null) {
          return flightDescriptorBuilder_.getMessageOrBuilder();
        } else {
          return flightDescriptor_ == null ?
              org.apache.arrow.flight.impl.Flight.FlightDescriptor.getDefaultInstance() : flightDescriptor_;
        }
      }
      /**
       * <pre>
       *
       * The descriptor of the data. This is only relevant when a client is
       * starting a new DoPut stream.
       * </pre>
       *
       * <code>.arrow.flight.protocol.FlightDescriptor flight_descriptor = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder> 
          getFlightDescriptorFieldBuilder() {
        if (flightDescriptorBuilder_ == null) {
          flightDescriptorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.FlightDescriptor, org.apache.arrow.flight.impl.Flight.FlightDescriptor.Builder, org.apache.arrow.flight.impl.Flight.FlightDescriptorOrBuilder>(
                  getFlightDescriptor(),
                  getParentForChildren(),
                  isClean());
          flightDescriptor_ = null;
        }
        return flightDescriptorBuilder_;
      }

      private com.google.protobuf.ByteString dataHeader_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *
       * Header for message data as described in Message.fbs::Message.
       * </pre>
       *
       * <code>bytes data_header = 2;</code>
       * @return The dataHeader.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getDataHeader() {
        return dataHeader_;
      }
      /**
       * <pre>
       *
       * Header for message data as described in Message.fbs::Message.
       * </pre>
       *
       * <code>bytes data_header = 2;</code>
       * @param value The dataHeader to set.
       * @return This builder for chaining.
       */
      public Builder setDataHeader(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        dataHeader_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Header for message data as described in Message.fbs::Message.
       * </pre>
       *
       * <code>bytes data_header = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDataHeader() {
        bitField0_ = (bitField0_ & ~0x00000002);
        dataHeader_ = getDefaultInstance().getDataHeader();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString appMetadata_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *
       * Application-defined metadata.
       * </pre>
       *
       * <code>bytes app_metadata = 3;</code>
       * @return The appMetadata.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getAppMetadata() {
        return appMetadata_;
      }
      /**
       * <pre>
       *
       * Application-defined metadata.
       * </pre>
       *
       * <code>bytes app_metadata = 3;</code>
       * @param value The appMetadata to set.
       * @return This builder for chaining.
       */
      public Builder setAppMetadata(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        appMetadata_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * Application-defined metadata.
       * </pre>
       *
       * <code>bytes app_metadata = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppMetadata() {
        bitField0_ = (bitField0_ & ~0x00000004);
        appMetadata_ = getDefaultInstance().getAppMetadata();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString dataBody_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *
       * The actual batch of Arrow data. Preferably handled with minimal-copies
       * coming last in the definition to help with sidecar patterns (it is
       * expected that some implementations will fetch this field off the wire
       * with specialized code to avoid extra memory copies).
       * </pre>
       *
       * <code>bytes data_body = 1000;</code>
       * @return The dataBody.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getDataBody() {
        return dataBody_;
      }
      /**
       * <pre>
       *
       * The actual batch of Arrow data. Preferably handled with minimal-copies
       * coming last in the definition to help with sidecar patterns (it is
       * expected that some implementations will fetch this field off the wire
       * with specialized code to avoid extra memory copies).
       * </pre>
       *
       * <code>bytes data_body = 1000;</code>
       * @param value The dataBody to set.
       * @return This builder for chaining.
       */
      public Builder setDataBody(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        dataBody_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *
       * The actual batch of Arrow data. Preferably handled with minimal-copies
       * coming last in the definition to help with sidecar patterns (it is
       * expected that some implementations will fetch this field off the wire
       * with specialized code to avoid extra memory copies).
       * </pre>
       *
       * <code>bytes data_body = 1000;</code>
       * @return This builder for chaining.
       */
      public Builder clearDataBody() {
        bitField0_ = (bitField0_ & ~0x00000008);
        dataBody_ = getDefaultInstance().getDataBody();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.FlightData)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.FlightData)
    private static final org.apache.arrow.flight.impl.Flight.FlightData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.FlightData();
    }

    public static org.apache.arrow.flight.impl.Flight.FlightData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FlightData>
        PARSER = new com.google.protobuf.AbstractParser<FlightData>() {
      @java.lang.Override
      public FlightData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.FlightData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PutResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.PutResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bytes app_metadata = 1;</code>
     * @return The appMetadata.
     */
    com.google.protobuf.ByteString getAppMetadata();
  }
  /**
   * <pre>
   **
   * The response message associated with the submission of a DoPut.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.PutResult}
   */
  public static final class PutResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.PutResult)
      PutResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutResult.newBuilder() to construct.
    private PutResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutResult() {
      appMetadata_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PutResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PutResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PutResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.PutResult.class, org.apache.arrow.flight.impl.Flight.PutResult.Builder.class);
    }

    public static final int APP_METADATA_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString appMetadata_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>bytes app_metadata = 1;</code>
     * @return The appMetadata.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getAppMetadata() {
      return appMetadata_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!appMetadata_.isEmpty()) {
        output.writeBytes(1, appMetadata_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!appMetadata_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, appMetadata_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.PutResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.PutResult other = (org.apache.arrow.flight.impl.Flight.PutResult) obj;

      if (!getAppMetadata()
          .equals(other.getAppMetadata())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.PutResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.PutResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.PutResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.PutResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.PutResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.PutResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.PutResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.PutResult 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 org.apache.arrow.flight.impl.Flight.PutResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.PutResult 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 org.apache.arrow.flight.impl.Flight.PutResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.PutResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.PutResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     **
     * The response message associated with the submission of a DoPut.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.PutResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.PutResult)
        org.apache.arrow.flight.impl.Flight.PutResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PutResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PutResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.PutResult.class, org.apache.arrow.flight.impl.Flight.PutResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.PutResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        appMetadata_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_PutResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.PutResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.PutResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.PutResult build() {
        org.apache.arrow.flight.impl.Flight.PutResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.PutResult buildPartial() {
        org.apache.arrow.flight.impl.Flight.PutResult result = new org.apache.arrow.flight.impl.Flight.PutResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.PutResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.appMetadata_ = appMetadata_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.PutResult) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.PutResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.PutResult other) {
        if (other == org.apache.arrow.flight.impl.Flight.PutResult.getDefaultInstance()) return this;
        if (other.getAppMetadata() != com.google.protobuf.ByteString.EMPTY) {
          setAppMetadata(other.getAppMetadata());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                appMetadata_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString appMetadata_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes app_metadata = 1;</code>
       * @return The appMetadata.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getAppMetadata() {
        return appMetadata_;
      }
      /**
       * <code>bytes app_metadata = 1;</code>
       * @param value The appMetadata to set.
       * @return This builder for chaining.
       */
      public Builder setAppMetadata(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        appMetadata_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bytes app_metadata = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAppMetadata() {
        bitField0_ = (bitField0_ & ~0x00000001);
        appMetadata_ = getDefaultInstance().getAppMetadata();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.PutResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.PutResult)
    private static final org.apache.arrow.flight.impl.Flight.PutResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.PutResult();
    }

    public static org.apache.arrow.flight.impl.Flight.PutResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PutResult>
        PARSER = new com.google.protobuf.AbstractParser<PutResult>() {
      @java.lang.Override
      public PutResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.PutResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SessionOptionValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.SessionOptionValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string string_value = 1;</code>
     * @return Whether the stringValue field is set.
     */
    boolean hasStringValue();
    /**
     * <code>string string_value = 1;</code>
     * @return The stringValue.
     */
    java.lang.String getStringValue();
    /**
     * <code>string string_value = 1;</code>
     * @return The bytes for stringValue.
     */
    com.google.protobuf.ByteString
        getStringValueBytes();

    /**
     * <code>bool bool_value = 2;</code>
     * @return Whether the boolValue field is set.
     */
    boolean hasBoolValue();
    /**
     * <code>bool bool_value = 2;</code>
     * @return The boolValue.
     */
    boolean getBoolValue();

    /**
     * <code>sfixed64 int64_value = 3;</code>
     * @return Whether the int64Value field is set.
     */
    boolean hasInt64Value();
    /**
     * <code>sfixed64 int64_value = 3;</code>
     * @return The int64Value.
     */
    long getInt64Value();

    /**
     * <code>double double_value = 4;</code>
     * @return Whether the doubleValue field is set.
     */
    boolean hasDoubleValue();
    /**
     * <code>double double_value = 4;</code>
     * @return The doubleValue.
     */
    double getDoubleValue();

    /**
     * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
     * @return Whether the stringListValue field is set.
     */
    boolean hasStringListValue();
    /**
     * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
     * @return The stringListValue.
     */
    org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue getStringListValue();
    /**
     * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
     */
    org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValueOrBuilder getStringListValueOrBuilder();

    org.apache.arrow.flight.impl.Flight.SessionOptionValue.OptionValueCase getOptionValueCase();
  }
  /**
   * <pre>
   *
   * EXPERIMENTAL: Union of possible value types for a Session Option to be set to.
   *
   * By convention, an attempt to set a valueless SessionOptionValue should
   * attempt to unset or clear the named option value on the server.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.SessionOptionValue}
   */
  public static final class SessionOptionValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.SessionOptionValue)
      SessionOptionValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SessionOptionValue.newBuilder() to construct.
    private SessionOptionValue(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SessionOptionValue() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SessionOptionValue();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.SessionOptionValue.class, org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder.class);
    }

    public interface StringListValueOrBuilder extends
        // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.SessionOptionValue.StringListValue)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>repeated string values = 1;</code>
       * @return A list containing the values.
       */
      java.util.List<java.lang.String>
          getValuesList();
      /**
       * <code>repeated string values = 1;</code>
       * @return The count of values.
       */
      int getValuesCount();
      /**
       * <code>repeated string values = 1;</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      java.lang.String getValues(int index);
      /**
       * <code>repeated string values = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the values at the given index.
       */
      com.google.protobuf.ByteString
          getValuesBytes(int index);
    }
    /**
     * Protobuf type {@code arrow.flight.protocol.SessionOptionValue.StringListValue}
     */
    public static final class StringListValue extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:arrow.flight.protocol.SessionOptionValue.StringListValue)
        StringListValueOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use StringListValue.newBuilder() to construct.
      private StringListValue(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private StringListValue() {
        values_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new StringListValue();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.class, org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.Builder.class);
      }

      public static final int VALUES_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private com.google.protobuf.LazyStringArrayList values_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      /**
       * <code>repeated string values = 1;</code>
       * @return A list containing the values.
       */
      public com.google.protobuf.ProtocolStringList
          getValuesList() {
        return values_;
      }
      /**
       * <code>repeated string values = 1;</code>
       * @return The count of values.
       */
      public int getValuesCount() {
        return values_.size();
      }
      /**
       * <code>repeated string values = 1;</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      public java.lang.String getValues(int index) {
        return values_.get(index);
      }
      /**
       * <code>repeated string values = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the values at the given index.
       */
      public com.google.protobuf.ByteString
          getValuesBytes(int index) {
        return values_.getByteString(index);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < values_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, values_.getRaw(i));
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        {
          int dataSize = 0;
          for (int i = 0; i < values_.size(); i++) {
            dataSize += computeStringSizeNoTag(values_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getValuesList().size();
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue)) {
          return super.equals(obj);
        }
        org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue other = (org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) obj;

        if (!getValuesList()
            .equals(other.getValuesList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getValuesCount() > 0) {
          hash = (37 * hash) + VALUES_FIELD_NUMBER;
          hash = (53 * hash) + getValuesList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue 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 org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue 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 org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      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 arrow.flight.protocol.SessionOptionValue.StringListValue}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.SessionOptionValue.StringListValue)
          org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValueOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.class, org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.Builder.class);
        }

        // Construct using org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          values_ =
              com.google.protobuf.LazyStringArrayList.emptyList();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_descriptor;
        }

        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue getDefaultInstanceForType() {
          return org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance();
        }

        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue build() {
          org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue buildPartial() {
          org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue result = new org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            values_.makeImmutable();
            result.values_ = values_;
          }
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) {
            return mergeFrom((org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue other) {
          if (other == org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance()) return this;
          if (!other.values_.isEmpty()) {
            if (values_.isEmpty()) {
              values_ = other.values_;
              bitField0_ |= 0x00000001;
            } else {
              ensureValuesIsMutable();
              values_.addAll(other.values_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureValuesIsMutable();
                  values_.add(s);
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private com.google.protobuf.LazyStringArrayList values_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        private void ensureValuesIsMutable() {
          if (!values_.isModifiable()) {
            values_ = new com.google.protobuf.LazyStringArrayList(values_);
          }
          bitField0_ |= 0x00000001;
        }
        /**
         * <code>repeated string values = 1;</code>
         * @return A list containing the values.
         */
        public com.google.protobuf.ProtocolStringList
            getValuesList() {
          values_.makeImmutable();
          return values_;
        }
        /**
         * <code>repeated string values = 1;</code>
         * @return The count of values.
         */
        public int getValuesCount() {
          return values_.size();
        }
        /**
         * <code>repeated string values = 1;</code>
         * @param index The index of the element to return.
         * @return The values at the given index.
         */
        public java.lang.String getValues(int index) {
          return values_.get(index);
        }
        /**
         * <code>repeated string values = 1;</code>
         * @param index The index of the value to return.
         * @return The bytes of the values at the given index.
         */
        public com.google.protobuf.ByteString
            getValuesBytes(int index) {
          return values_.getByteString(index);
        }
        /**
         * <code>repeated string values = 1;</code>
         * @param index The index to set the value at.
         * @param value The values to set.
         * @return This builder for chaining.
         */
        public Builder setValues(
            int index, java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          ensureValuesIsMutable();
          values_.set(index, value);
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>repeated string values = 1;</code>
         * @param value The values to add.
         * @return This builder for chaining.
         */
        public Builder addValues(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          ensureValuesIsMutable();
          values_.add(value);
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>repeated string values = 1;</code>
         * @param values The values to add.
         * @return This builder for chaining.
         */
        public Builder addAllValues(
            java.lang.Iterable<java.lang.String> values) {
          ensureValuesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, values_);
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>repeated string values = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearValues() {
          values_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);;
          onChanged();
          return this;
        }
        /**
         * <code>repeated string values = 1;</code>
         * @param value The bytes of the values to add.
         * @return This builder for chaining.
         */
        public Builder addValuesBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          ensureValuesIsMutable();
          values_.add(value);
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.SessionOptionValue.StringListValue)
      }

      // @@protoc_insertion_point(class_scope:arrow.flight.protocol.SessionOptionValue.StringListValue)
      private static final org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue();
      }

      public static org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<StringListValue>
          PARSER = new com.google.protobuf.AbstractParser<StringListValue>() {
        @java.lang.Override
        public StringListValue parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

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

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

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int optionValueCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object optionValue_;
    public enum OptionValueCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      STRING_VALUE(1),
      BOOL_VALUE(2),
      INT64_VALUE(3),
      DOUBLE_VALUE(4),
      STRING_LIST_VALUE(5),
      OPTIONVALUE_NOT_SET(0);
      private final int value;
      private OptionValueCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static OptionValueCase valueOf(int value) {
        return forNumber(value);
      }

      public static OptionValueCase forNumber(int value) {
        switch (value) {
          case 1: return STRING_VALUE;
          case 2: return BOOL_VALUE;
          case 3: return INT64_VALUE;
          case 4: return DOUBLE_VALUE;
          case 5: return STRING_LIST_VALUE;
          case 0: return OPTIONVALUE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public OptionValueCase
    getOptionValueCase() {
      return OptionValueCase.forNumber(
          optionValueCase_);
    }

    public static final int STRING_VALUE_FIELD_NUMBER = 1;
    /**
     * <code>string string_value = 1;</code>
     * @return Whether the stringValue field is set.
     */
    public boolean hasStringValue() {
      return optionValueCase_ == 1;
    }
    /**
     * <code>string string_value = 1;</code>
     * @return The stringValue.
     */
    public java.lang.String getStringValue() {
      java.lang.Object ref = "";
      if (optionValueCase_ == 1) {
        ref = optionValue_;
      }
      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 (optionValueCase_ == 1) {
          optionValue_ = s;
        }
        return s;
      }
    }
    /**
     * <code>string string_value = 1;</code>
     * @return The bytes for stringValue.
     */
    public com.google.protobuf.ByteString
        getStringValueBytes() {
      java.lang.Object ref = "";
      if (optionValueCase_ == 1) {
        ref = optionValue_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (optionValueCase_ == 1) {
          optionValue_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BOOL_VALUE_FIELD_NUMBER = 2;
    /**
     * <code>bool bool_value = 2;</code>
     * @return Whether the boolValue field is set.
     */
    @java.lang.Override
    public boolean hasBoolValue() {
      return optionValueCase_ == 2;
    }
    /**
     * <code>bool bool_value = 2;</code>
     * @return The boolValue.
     */
    @java.lang.Override
    public boolean getBoolValue() {
      if (optionValueCase_ == 2) {
        return (java.lang.Boolean) optionValue_;
      }
      return false;
    }

    public static final int INT64_VALUE_FIELD_NUMBER = 3;
    /**
     * <code>sfixed64 int64_value = 3;</code>
     * @return Whether the int64Value field is set.
     */
    @java.lang.Override
    public boolean hasInt64Value() {
      return optionValueCase_ == 3;
    }
    /**
     * <code>sfixed64 int64_value = 3;</code>
     * @return The int64Value.
     */
    @java.lang.Override
    public long getInt64Value() {
      if (optionValueCase_ == 3) {
        return (java.lang.Long) optionValue_;
      }
      return 0L;
    }

    public static final int DOUBLE_VALUE_FIELD_NUMBER = 4;
    /**
     * <code>double double_value = 4;</code>
     * @return Whether the doubleValue field is set.
     */
    @java.lang.Override
    public boolean hasDoubleValue() {
      return optionValueCase_ == 4;
    }
    /**
     * <code>double double_value = 4;</code>
     * @return The doubleValue.
     */
    @java.lang.Override
    public double getDoubleValue() {
      if (optionValueCase_ == 4) {
        return (java.lang.Double) optionValue_;
      }
      return 0D;
    }

    public static final int STRING_LIST_VALUE_FIELD_NUMBER = 5;
    /**
     * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
     * @return Whether the stringListValue field is set.
     */
    @java.lang.Override
    public boolean hasStringListValue() {
      return optionValueCase_ == 5;
    }
    /**
     * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
     * @return The stringListValue.
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue getStringListValue() {
      if (optionValueCase_ == 5) {
         return (org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) optionValue_;
      }
      return org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance();
    }
    /**
     * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValueOrBuilder getStringListValueOrBuilder() {
      if (optionValueCase_ == 5) {
         return (org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) optionValue_;
      }
      return org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (optionValueCase_ == 1) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, optionValue_);
      }
      if (optionValueCase_ == 2) {
        output.writeBool(
            2, (boolean)((java.lang.Boolean) optionValue_));
      }
      if (optionValueCase_ == 3) {
        output.writeSFixed64(
            3, (long)((java.lang.Long) optionValue_));
      }
      if (optionValueCase_ == 4) {
        output.writeDouble(
            4, (double)((java.lang.Double) optionValue_));
      }
      if (optionValueCase_ == 5) {
        output.writeMessage(5, (org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) optionValue_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (optionValueCase_ == 1) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, optionValue_);
      }
      if (optionValueCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(
              2, (boolean)((java.lang.Boolean) optionValue_));
      }
      if (optionValueCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeSFixed64Size(
              3, (long)((java.lang.Long) optionValue_));
      }
      if (optionValueCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(
              4, (double)((java.lang.Double) optionValue_));
      }
      if (optionValueCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) optionValue_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.SessionOptionValue)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.SessionOptionValue other = (org.apache.arrow.flight.impl.Flight.SessionOptionValue) obj;

      if (!getOptionValueCase().equals(other.getOptionValueCase())) return false;
      switch (optionValueCase_) {
        case 1:
          if (!getStringValue()
              .equals(other.getStringValue())) return false;
          break;
        case 2:
          if (getBoolValue()
              != other.getBoolValue()) return false;
          break;
        case 3:
          if (getInt64Value()
              != other.getInt64Value()) return false;
          break;
        case 4:
          if (java.lang.Double.doubleToLongBits(getDoubleValue())
              != java.lang.Double.doubleToLongBits(
                  other.getDoubleValue())) return false;
          break;
        case 5:
          if (!getStringListValue()
              .equals(other.getStringListValue())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (optionValueCase_) {
        case 1:
          hash = (37 * hash) + STRING_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringValue().hashCode();
          break;
        case 2:
          hash = (37 * hash) + BOOL_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getBoolValue());
          break;
        case 3:
          hash = (37 * hash) + INT64_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getInt64Value());
          break;
        case 4:
          hash = (37 * hash) + DOUBLE_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getDoubleValue()));
          break;
        case 5:
          hash = (37 * hash) + STRING_LIST_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringListValue().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue 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 org.apache.arrow.flight.impl.Flight.SessionOptionValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue 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 org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.SessionOptionValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * EXPERIMENTAL: Union of possible value types for a Session Option to be set to.
     *
     * By convention, an attempt to set a valueless SessionOptionValue should
     * attempt to unset or clear the named option value on the server.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.SessionOptionValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.SessionOptionValue)
        org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.SessionOptionValue.class, org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.SessionOptionValue.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (stringListValueBuilder_ != null) {
          stringListValueBuilder_.clear();
        }
        optionValueCase_ = 0;
        optionValue_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SessionOptionValue_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.SessionOptionValue.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue build() {
        org.apache.arrow.flight.impl.Flight.SessionOptionValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue buildPartial() {
        org.apache.arrow.flight.impl.Flight.SessionOptionValue result = new org.apache.arrow.flight.impl.Flight.SessionOptionValue(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.SessionOptionValue result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(org.apache.arrow.flight.impl.Flight.SessionOptionValue result) {
        result.optionValueCase_ = optionValueCase_;
        result.optionValue_ = this.optionValue_;
        if (optionValueCase_ == 5 &&
            stringListValueBuilder_ != null) {
          result.optionValue_ = stringListValueBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.SessionOptionValue) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.SessionOptionValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.SessionOptionValue other) {
        if (other == org.apache.arrow.flight.impl.Flight.SessionOptionValue.getDefaultInstance()) return this;
        switch (other.getOptionValueCase()) {
          case STRING_VALUE: {
            optionValueCase_ = 1;
            optionValue_ = other.optionValue_;
            onChanged();
            break;
          }
          case BOOL_VALUE: {
            setBoolValue(other.getBoolValue());
            break;
          }
          case INT64_VALUE: {
            setInt64Value(other.getInt64Value());
            break;
          }
          case DOUBLE_VALUE: {
            setDoubleValue(other.getDoubleValue());
            break;
          }
          case STRING_LIST_VALUE: {
            mergeStringListValue(other.getStringListValue());
            break;
          }
          case OPTIONVALUE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                optionValueCase_ = 1;
                optionValue_ = s;
                break;
              } // case 10
              case 16: {
                optionValue_ = input.readBool();
                optionValueCase_ = 2;
                break;
              } // case 16
              case 25: {
                optionValue_ = input.readSFixed64();
                optionValueCase_ = 3;
                break;
              } // case 25
              case 33: {
                optionValue_ = input.readDouble();
                optionValueCase_ = 4;
                break;
              } // case 33
              case 42: {
                input.readMessage(
                    getStringListValueFieldBuilder().getBuilder(),
                    extensionRegistry);
                optionValueCase_ = 5;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int optionValueCase_ = 0;
      private java.lang.Object optionValue_;
      public OptionValueCase
          getOptionValueCase() {
        return OptionValueCase.forNumber(
            optionValueCase_);
      }

      public Builder clearOptionValue() {
        optionValueCase_ = 0;
        optionValue_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      /**
       * <code>string string_value = 1;</code>
       * @return Whether the stringValue field is set.
       */
      @java.lang.Override
      public boolean hasStringValue() {
        return optionValueCase_ == 1;
      }
      /**
       * <code>string string_value = 1;</code>
       * @return The stringValue.
       */
      @java.lang.Override
      public java.lang.String getStringValue() {
        java.lang.Object ref = "";
        if (optionValueCase_ == 1) {
          ref = optionValue_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (optionValueCase_ == 1) {
            optionValue_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string string_value = 1;</code>
       * @return The bytes for stringValue.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getStringValueBytes() {
        java.lang.Object ref = "";
        if (optionValueCase_ == 1) {
          ref = optionValue_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (optionValueCase_ == 1) {
            optionValue_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string string_value = 1;</code>
       * @param value The stringValue to set.
       * @return This builder for chaining.
       */
      public Builder setStringValue(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        optionValueCase_ = 1;
        optionValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string string_value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStringValue() {
        if (optionValueCase_ == 1) {
          optionValueCase_ = 0;
          optionValue_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <code>string string_value = 1;</code>
       * @param value The bytes for stringValue to set.
       * @return This builder for chaining.
       */
      public Builder setStringValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        optionValueCase_ = 1;
        optionValue_ = value;
        onChanged();
        return this;
      }

      /**
       * <code>bool bool_value = 2;</code>
       * @return Whether the boolValue field is set.
       */
      public boolean hasBoolValue() {
        return optionValueCase_ == 2;
      }
      /**
       * <code>bool bool_value = 2;</code>
       * @return The boolValue.
       */
      public boolean getBoolValue() {
        if (optionValueCase_ == 2) {
          return (java.lang.Boolean) optionValue_;
        }
        return false;
      }
      /**
       * <code>bool bool_value = 2;</code>
       * @param value The boolValue to set.
       * @return This builder for chaining.
       */
      public Builder setBoolValue(boolean value) {

        optionValueCase_ = 2;
        optionValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool bool_value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBoolValue() {
        if (optionValueCase_ == 2) {
          optionValueCase_ = 0;
          optionValue_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>sfixed64 int64_value = 3;</code>
       * @return Whether the int64Value field is set.
       */
      public boolean hasInt64Value() {
        return optionValueCase_ == 3;
      }
      /**
       * <code>sfixed64 int64_value = 3;</code>
       * @return The int64Value.
       */
      public long getInt64Value() {
        if (optionValueCase_ == 3) {
          return (java.lang.Long) optionValue_;
        }
        return 0L;
      }
      /**
       * <code>sfixed64 int64_value = 3;</code>
       * @param value The int64Value to set.
       * @return This builder for chaining.
       */
      public Builder setInt64Value(long value) {

        optionValueCase_ = 3;
        optionValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>sfixed64 int64_value = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearInt64Value() {
        if (optionValueCase_ == 3) {
          optionValueCase_ = 0;
          optionValue_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>double double_value = 4;</code>
       * @return Whether the doubleValue field is set.
       */
      public boolean hasDoubleValue() {
        return optionValueCase_ == 4;
      }
      /**
       * <code>double double_value = 4;</code>
       * @return The doubleValue.
       */
      public double getDoubleValue() {
        if (optionValueCase_ == 4) {
          return (java.lang.Double) optionValue_;
        }
        return 0D;
      }
      /**
       * <code>double double_value = 4;</code>
       * @param value The doubleValue to set.
       * @return This builder for chaining.
       */
      public Builder setDoubleValue(double value) {

        optionValueCase_ = 4;
        optionValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double double_value = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDoubleValue() {
        if (optionValueCase_ == 4) {
          optionValueCase_ = 0;
          optionValue_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.Builder, org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValueOrBuilder> stringListValueBuilder_;
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       * @return Whether the stringListValue field is set.
       */
      @java.lang.Override
      public boolean hasStringListValue() {
        return optionValueCase_ == 5;
      }
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       * @return The stringListValue.
       */
      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue getStringListValue() {
        if (stringListValueBuilder_ == null) {
          if (optionValueCase_ == 5) {
            return (org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) optionValue_;
          }
          return org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance();
        } else {
          if (optionValueCase_ == 5) {
            return stringListValueBuilder_.getMessage();
          }
          return org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance();
        }
      }
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       */
      public Builder setStringListValue(org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue value) {
        if (stringListValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          optionValue_ = value;
          onChanged();
        } else {
          stringListValueBuilder_.setMessage(value);
        }
        optionValueCase_ = 5;
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       */
      public Builder setStringListValue(
          org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.Builder builderForValue) {
        if (stringListValueBuilder_ == null) {
          optionValue_ = builderForValue.build();
          onChanged();
        } else {
          stringListValueBuilder_.setMessage(builderForValue.build());
        }
        optionValueCase_ = 5;
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       */
      public Builder mergeStringListValue(org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue value) {
        if (stringListValueBuilder_ == null) {
          if (optionValueCase_ == 5 &&
              optionValue_ != org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance()) {
            optionValue_ = org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.newBuilder((org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) optionValue_)
                .mergeFrom(value).buildPartial();
          } else {
            optionValue_ = value;
          }
          onChanged();
        } else {
          if (optionValueCase_ == 5) {
            stringListValueBuilder_.mergeFrom(value);
          } else {
            stringListValueBuilder_.setMessage(value);
          }
        }
        optionValueCase_ = 5;
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       */
      public Builder clearStringListValue() {
        if (stringListValueBuilder_ == null) {
          if (optionValueCase_ == 5) {
            optionValueCase_ = 0;
            optionValue_ = null;
            onChanged();
          }
        } else {
          if (optionValueCase_ == 5) {
            optionValueCase_ = 0;
            optionValue_ = null;
          }
          stringListValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       */
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.Builder getStringListValueBuilder() {
        return getStringListValueFieldBuilder().getBuilder();
      }
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       */
      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValueOrBuilder getStringListValueOrBuilder() {
        if ((optionValueCase_ == 5) && (stringListValueBuilder_ != null)) {
          return stringListValueBuilder_.getMessageOrBuilder();
        } else {
          if (optionValueCase_ == 5) {
            return (org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) optionValue_;
          }
          return org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance();
        }
      }
      /**
       * <code>.arrow.flight.protocol.SessionOptionValue.StringListValue string_list_value = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.Builder, org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValueOrBuilder> 
          getStringListValueFieldBuilder() {
        if (stringListValueBuilder_ == null) {
          if (!(optionValueCase_ == 5)) {
            optionValue_ = org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.getDefaultInstance();
          }
          stringListValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue.Builder, org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValueOrBuilder>(
                  (org.apache.arrow.flight.impl.Flight.SessionOptionValue.StringListValue) optionValue_,
                  getParentForChildren(),
                  isClean());
          optionValue_ = null;
        }
        optionValueCase_ = 5;
        onChanged();
        return stringListValueBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.SessionOptionValue)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.SessionOptionValue)
    private static final org.apache.arrow.flight.impl.Flight.SessionOptionValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.SessionOptionValue();
    }

    public static org.apache.arrow.flight.impl.Flight.SessionOptionValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SessionOptionValue>
        PARSER = new com.google.protobuf.AbstractParser<SessionOptionValue>() {
      @java.lang.Override
      public SessionOptionValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SessionOptionValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SetSessionOptionsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.SetSessionOptionsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    int getSessionOptionsCount();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    boolean containsSessionOptions(
        java.lang.String key);
    /**
     * Use {@link #getSessionOptionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
    getSessionOptions();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
    getSessionOptionsMap();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrDefault(
        java.lang.String key,
        /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue defaultValue);
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   *
   * EXPERIMENTAL: A request to set session options for an existing or new (implicit)
   * server session.
   *
   * Sessions are persisted and referenced via a transport-level state management, typically
   * RFC 6265 HTTP cookies when using an HTTP transport.  The suggested cookie name or state
   * context key is 'arrow_flight_session_id', although implementations may freely choose their
   * own name.
   *
   * Session creation (if one does not already exist) is implied by this RPC request, however
   * server implementations may choose to initiate a session that also contains client-provided
   * session options at any other time, e.g. on authentication, or when any other call is made
   * and the server wishes to use a session to persist any state (or lack thereof).
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.SetSessionOptionsRequest}
   */
  public static final class SetSessionOptionsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.SetSessionOptionsRequest)
      SetSessionOptionsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SetSessionOptionsRequest.newBuilder() to construct.
    private SetSessionOptionsRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SetSessionOptionsRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SetSessionOptionsRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsRequest_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetSessionOptions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest.class, org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest.Builder.class);
    }

    public static final int SESSION_OPTIONS_FIELD_NUMBER = 1;
    private static final class SessionOptionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>newDefaultInstance(
                  org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsRequest_SessionOptionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  org.apache.arrow.flight.impl.Flight.SessionOptionValue.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> sessionOptions_;
    private com.google.protobuf.MapField<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
    internalGetSessionOptions() {
      if (sessionOptions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SessionOptionsDefaultEntryHolder.defaultEntry);
      }
      return sessionOptions_;
    }
    public int getSessionOptionsCount() {
      return internalGetSessionOptions().getMap().size();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    @java.lang.Override
    public boolean containsSessionOptions(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetSessionOptions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSessionOptionsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> getSessionOptions() {
      return getSessionOptionsMap();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> getSessionOptionsMap() {
      return internalGetSessionOptions().getMap();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrDefault(
        java.lang.String key,
        /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> map =
          internalGetSessionOptions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> map =
          internalGetSessionOptions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetSessionOptions(),
          SessionOptionsDefaultEntryHolder.defaultEntry,
          1);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> entry
           : internalGetSessionOptions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
        sessionOptions__ = SessionOptionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, sessionOptions__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest other = (org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest) obj;

      if (!internalGetSessionOptions().equals(
          other.internalGetSessionOptions())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetSessionOptions().getMap().isEmpty()) {
        hash = (37 * hash) + SESSION_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetSessionOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest 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 org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest 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 org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * EXPERIMENTAL: A request to set session options for an existing or new (implicit)
     * server session.
     *
     * Sessions are persisted and referenced via a transport-level state management, typically
     * RFC 6265 HTTP cookies when using an HTTP transport.  The suggested cookie name or state
     * context key is 'arrow_flight_session_id', although implementations may freely choose their
     * own name.
     *
     * Session creation (if one does not already exist) is implied by this RPC request, however
     * server implementations may choose to initiate a session that also contains client-provided
     * session options at any other time, e.g. on authentication, or when any other call is made
     * and the server wishes to use a session to persist any state (or lack thereof).
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.SetSessionOptionsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.SetSessionOptionsRequest)
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsRequest_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetSessionOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableSessionOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest.class, org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableSessionOptions().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest build() {
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest buildPartial() {
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest result = new org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sessionOptions_ = internalGetSessionOptions().build(SessionOptionsDefaultEntryHolder.defaultEntry);
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest other) {
        if (other == org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest.getDefaultInstance()) return this;
        internalGetMutableSessionOptions().mergeFrom(
            other.internalGetSessionOptions());
        bitField0_ |= 0x00000001;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
                sessionOptions__ = input.readMessage(
                    SessionOptionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableSessionOptions().ensureBuilderMap().put(
                    sessionOptions__.getKey(), sessionOptions__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private static final class SessionOptionsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder, org.apache.arrow.flight.impl.Flight.SessionOptionValue> {
        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SessionOptionValue build(org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder val) {
          if (val instanceof org.apache.arrow.flight.impl.Flight.SessionOptionValue) { return (org.apache.arrow.flight.impl.Flight.SessionOptionValue) val; }
          return ((org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> defaultEntry() {
          return SessionOptionsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final SessionOptionsConverter sessionOptionsConverter = new SessionOptionsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder, org.apache.arrow.flight.impl.Flight.SessionOptionValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder> sessionOptions_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder, org.apache.arrow.flight.impl.Flight.SessionOptionValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder>
          internalGetSessionOptions() {
        if (sessionOptions_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(sessionOptionsConverter);
        }
        return sessionOptions_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder, org.apache.arrow.flight.impl.Flight.SessionOptionValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder>
          internalGetMutableSessionOptions() {
        if (sessionOptions_ == null) {
          sessionOptions_ = new com.google.protobuf.MapFieldBuilder<>(sessionOptionsConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return sessionOptions_;
      }
      public int getSessionOptionsCount() {
        return internalGetSessionOptions().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      @java.lang.Override
      public boolean containsSessionOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetSessionOptions().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getSessionOptionsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> getSessionOptions() {
        return getSessionOptionsMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> getSessionOptionsMap() {
        return internalGetSessionOptions().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrDefault(
          java.lang.String key,
          /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder> map = internalGetMutableSessionOptions().ensureBuilderMap();
        return map.containsKey(key) ? sessionOptionsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder> map = internalGetMutableSessionOptions().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return sessionOptionsConverter.build(map.get(key));
      }
      public Builder clearSessionOptions() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableSessionOptions().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      public Builder removeSessionOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableSessionOptions().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
          getMutableSessionOptions() {
        bitField0_ |= 0x00000001;
        return internalGetMutableSessionOptions().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      public Builder putSessionOptions(
          java.lang.String key,
          org.apache.arrow.flight.impl.Flight.SessionOptionValue value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableSessionOptions().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      public Builder putAllSessionOptions(
          java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> values) {
        for (java.util.Map.Entry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableSessionOptions().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder putSessionOptionsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder> builderMap = internalGetMutableSessionOptions().ensureBuilderMap();
        org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = org.apache.arrow.flight.impl.Flight.SessionOptionValue.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof org.apache.arrow.flight.impl.Flight.SessionOptionValue) {
          entry = ((org.apache.arrow.flight.impl.Flight.SessionOptionValue) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder) entry;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.SetSessionOptionsRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.SetSessionOptionsRequest)
    private static final org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest();
    }

    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SetSessionOptionsRequest>
        PARSER = new com.google.protobuf.AbstractParser<SetSessionOptionsRequest>() {
      @java.lang.Override
      public SetSessionOptionsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SetSessionOptionsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SetSessionOptionsResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.SetSessionOptionsResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    int getErrorsCount();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    boolean containsErrors(
        java.lang.String key);
    /**
     * Use {@link #getErrorsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error>
    getErrors();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error>
    getErrorsMap();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    /* nullable */
org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getErrorsOrDefault(
        java.lang.String key,
        /* nullable */
org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error defaultValue);
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getErrorsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   *
   * EXPERIMENTAL: The results (individually) of setting a set of session options.
   *
   * Option names should only be present in the response if they were not successfully
   * set on the server; that is, a response without an Error for a name provided in the
   * SetSessionOptionsRequest implies that the named option value was set successfully.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.SetSessionOptionsResult}
   */
  public static final class SetSessionOptionsResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.SetSessionOptionsResult)
      SetSessionOptionsResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SetSessionOptionsResult.newBuilder() to construct.
    private SetSessionOptionsResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SetSessionOptionsResult() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SetSessionOptionsResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetErrors();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.class, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Builder.class);
    }

    /**
     * Protobuf enum {@code arrow.flight.protocol.SetSessionOptionsResult.ErrorValue}
     */
    public enum ErrorValue
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Protobuf deserialization fallback value: The status is unknown or unrecognized.
       * Servers should avoid using this value. The request may be retried by the client.
       * </pre>
       *
       * <code>UNSPECIFIED = 0;</code>
       */
      UNSPECIFIED(0),
      /**
       * <pre>
       * The given session option name is invalid.
       * </pre>
       *
       * <code>INVALID_NAME = 1;</code>
       */
      INVALID_NAME(1),
      /**
       * <pre>
       * The session option value or type is invalid.
       * </pre>
       *
       * <code>INVALID_VALUE = 2;</code>
       */
      INVALID_VALUE(2),
      /**
       * <pre>
       * The session option cannot be set.
       * </pre>
       *
       * <code>ERROR = 3;</code>
       */
      ERROR(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Protobuf deserialization fallback value: The status is unknown or unrecognized.
       * Servers should avoid using this value. The request may be retried by the client.
       * </pre>
       *
       * <code>UNSPECIFIED = 0;</code>
       */
      public static final int UNSPECIFIED_VALUE = 0;
      /**
       * <pre>
       * The given session option name is invalid.
       * </pre>
       *
       * <code>INVALID_NAME = 1;</code>
       */
      public static final int INVALID_NAME_VALUE = 1;
      /**
       * <pre>
       * The session option value or type is invalid.
       * </pre>
       *
       * <code>INVALID_VALUE = 2;</code>
       */
      public static final int INVALID_VALUE_VALUE = 2;
      /**
       * <pre>
       * The session option cannot be set.
       * </pre>
       *
       * <code>ERROR = 3;</code>
       */
      public static final int ERROR_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;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ErrorValue valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static ErrorValue forNumber(int value) {
        switch (value) {
          case 0: return UNSPECIFIED;
          case 1: return INVALID_NAME;
          case 2: return INVALID_VALUE;
          case 3: return ERROR;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        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 org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.getDescriptor().getEnumTypes().get(0);
      }

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

      public static ErrorValue 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 ErrorValue(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.SetSessionOptionsResult.ErrorValue)
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.SetSessionOptionsResult.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      int getValueValue();
      /**
       * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
       * @return The value.
       */
      org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue getValue();
    }
    /**
     * Protobuf type {@code arrow.flight.protocol.SetSessionOptionsResult.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:arrow.flight.protocol.SetSessionOptionsResult.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
        value_ = 0;
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Error();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.class, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.Builder.class);
      }

      public static final int VALUE_FIELD_NUMBER = 1;
      private int value_ = 0;
      /**
       * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      @java.lang.Override public int getValueValue() {
        return value_;
      }
      /**
       * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
       * @return The value.
       */
      @java.lang.Override public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue getValue() {
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue result = org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue.forNumber(value_);
        return result == null ? org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue.UNRECOGNIZED : result;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (value_ != org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue.UNSPECIFIED.getNumber()) {
          output.writeEnum(1, value_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (value_ != org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue.UNSPECIFIED.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, value_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error)) {
          return super.equals(obj);
        }
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error other = (org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error) obj;

        if (value_ != other.value_) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error 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 org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error 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 org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      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 arrow.flight.protocol.SetSessionOptionsResult.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.SetSessionOptionsResult.Error)
          org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.class, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.Builder.class);
        }

        // Construct using org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          value_ = 0;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_descriptor;
        }

        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getDefaultInstanceForType() {
          return org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.getDefaultInstance();
        }

        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error build() {
          org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error buildPartial() {
          org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error result = new org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.value_ = value_;
          }
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error) {
            return mergeFrom((org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error other) {
          if (other == org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.getDefaultInstance()) return this;
          if (other.value_ != 0) {
            setValueValue(other.getValueValue());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  value_ = input.readEnum();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int value_ = 0;
        /**
         * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
         * @return The enum numeric value on the wire for value.
         */
        @java.lang.Override public int getValueValue() {
          return value_;
        }
        /**
         * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
         * @param value The enum numeric value on the wire for value to set.
         * @return This builder for chaining.
         */
        public Builder setValueValue(int value) {
          value_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
         * @return The value.
         */
        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue getValue() {
          org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue result = org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue.forNumber(value_);
          return result == null ? org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue.UNRECOGNIZED : result;
        }
        /**
         * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
         * @param value The value to set.
         * @return This builder for chaining.
         */
        public Builder setValue(org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorValue value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          value_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.arrow.flight.protocol.SetSessionOptionsResult.ErrorValue value = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearValue() {
          bitField0_ = (bitField0_ & ~0x00000001);
          value_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.SetSessionOptionsResult.Error)
      }

      // @@protoc_insertion_point(class_scope:arrow.flight.protocol.SetSessionOptionsResult.Error)
      private static final org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error();
      }

      public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Error>
          PARSER = new com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

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

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

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int ERRORS_FIELD_NUMBER = 1;
    private static final class ErrorsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error>newDefaultInstance(
                  org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_ErrorsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> errors_;
    private com.google.protobuf.MapField<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error>
    internalGetErrors() {
      if (errors_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ErrorsDefaultEntryHolder.defaultEntry);
      }
      return errors_;
    }
    public int getErrorsCount() {
      return internalGetErrors().getMap().size();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    @java.lang.Override
    public boolean containsErrors(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetErrors().getMap().containsKey(key);
    }
    /**
     * Use {@link #getErrorsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> getErrors() {
      return getErrorsMap();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> getErrorsMap() {
      return internalGetErrors().getMap();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getErrorsOrDefault(
        java.lang.String key,
        /* nullable */
org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> map =
          internalGetErrors().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getErrorsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> map =
          internalGetErrors().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetErrors(),
          ErrorsDefaultEntryHolder.defaultEntry,
          1);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> entry
           : internalGetErrors().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error>
        errors__ = ErrorsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, errors__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult other = (org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult) obj;

      if (!internalGetErrors().equals(
          other.internalGetErrors())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetErrors().getMap().isEmpty()) {
        hash = (37 * hash) + ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetErrors().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult 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 org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult 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 org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * EXPERIMENTAL: The results (individually) of setting a set of session options.
     *
     * Option names should only be present in the response if they were not successfully
     * set on the server; that is, a response without an Error for a name provided in the
     * SetSessionOptionsRequest implies that the named option value was set successfully.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.SetSessionOptionsResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.SetSessionOptionsResult)
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetErrors();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableErrors();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.class, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableErrors().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_SetSessionOptionsResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult build() {
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult buildPartial() {
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult result = new org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.errors_ = internalGetErrors().build(ErrorsDefaultEntryHolder.defaultEntry);
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult other) {
        if (other == org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.getDefaultInstance()) return this;
        internalGetMutableErrors().mergeFrom(
            other.internalGetErrors());
        bitField0_ |= 0x00000001;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error>
                errors__ = input.readMessage(
                    ErrorsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableErrors().ensureBuilderMap().put(
                    errors__.getKey(), errors__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private static final class ErrorsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> {
        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error build(org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder val) {
          if (val instanceof org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error) { return (org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error) val; }
          return ((org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> defaultEntry() {
          return ErrorsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final ErrorsConverter errorsConverter = new ErrorsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.Builder> errors_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.Builder>
          internalGetErrors() {
        if (errors_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(errorsConverter);
        }
        return errors_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.Builder>
          internalGetMutableErrors() {
        if (errors_ == null) {
          errors_ = new com.google.protobuf.MapFieldBuilder<>(errorsConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return errors_;
      }
      public int getErrorsCount() {
        return internalGetErrors().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
       */
      @java.lang.Override
      public boolean containsErrors(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetErrors().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getErrorsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> getErrors() {
        return getErrorsMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> getErrorsMap() {
        return internalGetErrors().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getErrorsOrDefault(
          java.lang.String key,
          /* nullable */
org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder> map = internalGetMutableErrors().ensureBuilderMap();
        return map.containsKey(key) ? errorsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
       */
      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error getErrorsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder> map = internalGetMutableErrors().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return errorsConverter.build(map.get(key));
      }
      public Builder clearErrors() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableErrors().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
       */
      public Builder removeErrors(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableErrors().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error>
          getMutableErrors() {
        bitField0_ |= 0x00000001;
        return internalGetMutableErrors().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
       */
      public Builder putErrors(
          java.lang.String key,
          org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableErrors().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
       */
      public Builder putAllErrors(
          java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> values) {
        for (java.util.Map.Entry<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableErrors().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SetSessionOptionsResult.Error&gt; errors = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.Builder putErrorsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder> builderMap = internalGetMutableErrors().ensureBuilderMap();
        org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.ErrorOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error) {
          entry = ((org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult.Error.Builder) entry;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.SetSessionOptionsResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.SetSessionOptionsResult)
    private static final org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult();
    }

    public static org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SetSessionOptionsResult>
        PARSER = new com.google.protobuf.AbstractParser<SetSessionOptionsResult>() {
      @java.lang.Override
      public SetSessionOptionsResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SetSessionOptionsResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetSessionOptionsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.GetSessionOptionsRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *
   * EXPERIMENTAL: A request to access the session options for the current server session.
   *
   * The existing session is referenced via a cookie header or similar (see
   * SetSessionOptionsRequest above); it is an error to make this request with a missing,
   * invalid, or expired session cookie header or other implementation-defined session
   * reference token.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.GetSessionOptionsRequest}
   */
  public static final class GetSessionOptionsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.GetSessionOptionsRequest)
      GetSessionOptionsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetSessionOptionsRequest.newBuilder() to construct.
    private GetSessionOptionsRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetSessionOptionsRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetSessionOptionsRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest.class, org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest other = (org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest 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 org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest 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 org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * EXPERIMENTAL: A request to access the session options for the current server session.
     *
     * The existing session is referenced via a cookie header or similar (see
     * SetSessionOptionsRequest above); it is an error to make this request with a missing,
     * invalid, or expired session cookie header or other implementation-defined session
     * reference token.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.GetSessionOptionsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.GetSessionOptionsRequest)
        org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest.class, org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest build() {
        org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest buildPartial() {
        org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest result = new org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest other) {
        if (other == org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.GetSessionOptionsRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.GetSessionOptionsRequest)
    private static final org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest();
    }

    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetSessionOptionsRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetSessionOptionsRequest>() {
      @java.lang.Override
      public GetSessionOptionsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.GetSessionOptionsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetSessionOptionsResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.GetSessionOptionsResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    int getSessionOptionsCount();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    boolean containsSessionOptions(
        java.lang.String key);
    /**
     * Use {@link #getSessionOptionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
    getSessionOptions();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
    getSessionOptionsMap();
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrDefault(
        java.lang.String key,
        /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue defaultValue);
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   *
   * EXPERIMENTAL: The result containing the current server session options.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.GetSessionOptionsResult}
   */
  public static final class GetSessionOptionsResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.GetSessionOptionsResult)
      GetSessionOptionsResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetSessionOptionsResult.newBuilder() to construct.
    private GetSessionOptionsResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetSessionOptionsResult() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetSessionOptionsResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsResult_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 1:
          return internalGetSessionOptions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult.class, org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult.Builder.class);
    }

    public static final int SESSION_OPTIONS_FIELD_NUMBER = 1;
    private static final class SessionOptionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>newDefaultInstance(
                  org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsResult_SessionOptionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  org.apache.arrow.flight.impl.Flight.SessionOptionValue.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> sessionOptions_;
    private com.google.protobuf.MapField<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
    internalGetSessionOptions() {
      if (sessionOptions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SessionOptionsDefaultEntryHolder.defaultEntry);
      }
      return sessionOptions_;
    }
    public int getSessionOptionsCount() {
      return internalGetSessionOptions().getMap().size();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    @java.lang.Override
    public boolean containsSessionOptions(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetSessionOptions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSessionOptionsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> getSessionOptions() {
      return getSessionOptionsMap();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> getSessionOptionsMap() {
      return internalGetSessionOptions().getMap();
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrDefault(
        java.lang.String key,
        /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> map =
          internalGetSessionOptions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
     */
    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> map =
          internalGetSessionOptions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetSessionOptions(),
          SessionOptionsDefaultEntryHolder.defaultEntry,
          1);
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> entry
           : internalGetSessionOptions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
        sessionOptions__ = SessionOptionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, sessionOptions__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult other = (org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult) obj;

      if (!internalGetSessionOptions().equals(
          other.internalGetSessionOptions())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetSessionOptions().getMap().isEmpty()) {
        hash = (37 * hash) + SESSION_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetSessionOptions().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult 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 org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult 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 org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * EXPERIMENTAL: The result containing the current server session options.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.GetSessionOptionsResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.GetSessionOptionsResult)
        org.apache.arrow.flight.impl.Flight.GetSessionOptionsResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsResult_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetSessionOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableSessionOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult.class, org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableSessionOptions().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_GetSessionOptionsResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult build() {
        org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult buildPartial() {
        org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult result = new org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sessionOptions_ = internalGetSessionOptions().build(SessionOptionsDefaultEntryHolder.defaultEntry);
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult other) {
        if (other == org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult.getDefaultInstance()) return this;
        internalGetMutableSessionOptions().mergeFrom(
            other.internalGetSessionOptions());
        bitField0_ |= 0x00000001;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
                sessionOptions__ = input.readMessage(
                    SessionOptionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableSessionOptions().ensureBuilderMap().put(
                    sessionOptions__.getKey(), sessionOptions__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private static final class SessionOptionsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder, org.apache.arrow.flight.impl.Flight.SessionOptionValue> {
        @java.lang.Override
        public org.apache.arrow.flight.impl.Flight.SessionOptionValue build(org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder val) {
          if (val instanceof org.apache.arrow.flight.impl.Flight.SessionOptionValue) { return (org.apache.arrow.flight.impl.Flight.SessionOptionValue) val; }
          return ((org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> defaultEntry() {
          return SessionOptionsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final SessionOptionsConverter sessionOptionsConverter = new SessionOptionsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder, org.apache.arrow.flight.impl.Flight.SessionOptionValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder> sessionOptions_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder, org.apache.arrow.flight.impl.Flight.SessionOptionValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder>
          internalGetSessionOptions() {
        if (sessionOptions_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(sessionOptionsConverter);
        }
        return sessionOptions_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder, org.apache.arrow.flight.impl.Flight.SessionOptionValue, org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder>
          internalGetMutableSessionOptions() {
        if (sessionOptions_ == null) {
          sessionOptions_ = new com.google.protobuf.MapFieldBuilder<>(sessionOptionsConverter);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return sessionOptions_;
      }
      public int getSessionOptionsCount() {
        return internalGetSessionOptions().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      @java.lang.Override
      public boolean containsSessionOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetSessionOptions().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getSessionOptionsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> getSessionOptions() {
        return getSessionOptionsMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> getSessionOptionsMap() {
        return internalGetSessionOptions().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrDefault(
          java.lang.String key,
          /* nullable */
org.apache.arrow.flight.impl.Flight.SessionOptionValue defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder> map = internalGetMutableSessionOptions().ensureBuilderMap();
        return map.containsKey(key) ? sessionOptionsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue getSessionOptionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder> map = internalGetMutableSessionOptions().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return sessionOptionsConverter.build(map.get(key));
      }
      public Builder clearSessionOptions() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableSessionOptions().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      public Builder removeSessionOptions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableSessionOptions().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue>
          getMutableSessionOptions() {
        bitField0_ |= 0x00000001;
        return internalGetMutableSessionOptions().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      public Builder putSessionOptions(
          java.lang.String key,
          org.apache.arrow.flight.impl.Flight.SessionOptionValue value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableSessionOptions().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      public Builder putAllSessionOptions(
          java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> values) {
        for (java.util.Map.Entry<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValue> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableSessionOptions().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>map&lt;string, .arrow.flight.protocol.SessionOptionValue&gt; session_options = 1;</code>
       */
      public org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder putSessionOptionsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder> builderMap = internalGetMutableSessionOptions().ensureBuilderMap();
        org.apache.arrow.flight.impl.Flight.SessionOptionValueOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = org.apache.arrow.flight.impl.Flight.SessionOptionValue.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof org.apache.arrow.flight.impl.Flight.SessionOptionValue) {
          entry = ((org.apache.arrow.flight.impl.Flight.SessionOptionValue) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (org.apache.arrow.flight.impl.Flight.SessionOptionValue.Builder) entry;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.GetSessionOptionsResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.GetSessionOptionsResult)
    private static final org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult();
    }

    public static org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetSessionOptionsResult>
        PARSER = new com.google.protobuf.AbstractParser<GetSessionOptionsResult>() {
      @java.lang.Override
      public GetSessionOptionsResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.GetSessionOptionsResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CloseSessionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.CloseSessionRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *
   * Request message for the "Close Session" action.
   *
   * The exiting session is referenced via a cookie header.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.CloseSessionRequest}
   */
  public static final class CloseSessionRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.CloseSessionRequest)
      CloseSessionRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CloseSessionRequest.newBuilder() to construct.
    private CloseSessionRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CloseSessionRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CloseSessionRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.CloseSessionRequest.class, org.apache.arrow.flight.impl.Flight.CloseSessionRequest.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.CloseSessionRequest)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.CloseSessionRequest other = (org.apache.arrow.flight.impl.Flight.CloseSessionRequest) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest 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 org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest 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 org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.CloseSessionRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 message for the "Close Session" action.
     *
     * The exiting session is referenced via a cookie header.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.CloseSessionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.CloseSessionRequest)
        org.apache.arrow.flight.impl.Flight.CloseSessionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.CloseSessionRequest.class, org.apache.arrow.flight.impl.Flight.CloseSessionRequest.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.CloseSessionRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionRequest_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CloseSessionRequest getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.CloseSessionRequest.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CloseSessionRequest build() {
        org.apache.arrow.flight.impl.Flight.CloseSessionRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CloseSessionRequest buildPartial() {
        org.apache.arrow.flight.impl.Flight.CloseSessionRequest result = new org.apache.arrow.flight.impl.Flight.CloseSessionRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.CloseSessionRequest) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.CloseSessionRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.CloseSessionRequest other) {
        if (other == org.apache.arrow.flight.impl.Flight.CloseSessionRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.CloseSessionRequest)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.CloseSessionRequest)
    private static final org.apache.arrow.flight.impl.Flight.CloseSessionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.CloseSessionRequest();
    }

    public static org.apache.arrow.flight.impl.Flight.CloseSessionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CloseSessionRequest>
        PARSER = new com.google.protobuf.AbstractParser<CloseSessionRequest>() {
      @java.lang.Override
      public CloseSessionRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.CloseSessionRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CloseSessionResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:arrow.flight.protocol.CloseSessionResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
     * @return The status.
     */
    org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status getStatus();
  }
  /**
   * <pre>
   *
   * The result of closing a session.
   * </pre>
   *
   * Protobuf type {@code arrow.flight.protocol.CloseSessionResult}
   */
  public static final class CloseSessionResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:arrow.flight.protocol.CloseSessionResult)
      CloseSessionResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CloseSessionResult.newBuilder() to construct.
    private CloseSessionResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CloseSessionResult() {
      status_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CloseSessionResult();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.arrow.flight.impl.Flight.CloseSessionResult.class, org.apache.arrow.flight.impl.Flight.CloseSessionResult.Builder.class);
    }

    /**
     * Protobuf enum {@code arrow.flight.protocol.CloseSessionResult.Status}
     */
    public enum Status
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Protobuf deserialization fallback value: The session close status is unknown or
       * not recognized. Servers should avoid using this value (send a NOT_FOUND error if
       * the requested session is not known or expired). Clients can retry the request.
       * </pre>
       *
       * <code>UNSPECIFIED = 0;</code>
       */
      UNSPECIFIED(0),
      /**
       * <pre>
       * The session close request is complete. Subsequent requests with
       * the same session produce a NOT_FOUND error.
       * </pre>
       *
       * <code>CLOSED = 1;</code>
       */
      CLOSED(1),
      /**
       * <pre>
       * The session close request is in progress. The client may retry
       * the close request.
       * </pre>
       *
       * <code>CLOSING = 2;</code>
       */
      CLOSING(2),
      /**
       * <pre>
       * The session is not closeable. The client should not retry the
       * close request.
       * </pre>
       *
       * <code>NOT_CLOSEABLE = 3;</code>
       */
      NOT_CLOSEABLE(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Protobuf deserialization fallback value: The session close status is unknown or
       * not recognized. Servers should avoid using this value (send a NOT_FOUND error if
       * the requested session is not known or expired). Clients can retry the request.
       * </pre>
       *
       * <code>UNSPECIFIED = 0;</code>
       */
      public static final int UNSPECIFIED_VALUE = 0;
      /**
       * <pre>
       * The session close request is complete. Subsequent requests with
       * the same session produce a NOT_FOUND error.
       * </pre>
       *
       * <code>CLOSED = 1;</code>
       */
      public static final int CLOSED_VALUE = 1;
      /**
       * <pre>
       * The session close request is in progress. The client may retry
       * the close request.
       * </pre>
       *
       * <code>CLOSING = 2;</code>
       */
      public static final int CLOSING_VALUE = 2;
      /**
       * <pre>
       * The session is not closeable. The client should not retry the
       * close request.
       * </pre>
       *
       * <code>NOT_CLOSEABLE = 3;</code>
       */
      public static final int NOT_CLOSEABLE_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;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Status valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Status forNumber(int value) {
        switch (value) {
          case 0: return UNSPECIFIED;
          case 1: return CLOSED;
          case 2: return CLOSING;
          case 3: return NOT_CLOSEABLE;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        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 org.apache.arrow.flight.impl.Flight.CloseSessionResult.getDescriptor().getEnumTypes().get(0);
      }

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

      public static Status 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 Status(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:arrow.flight.protocol.CloseSessionResult.Status)
    }

    public static final int STATUS_FIELD_NUMBER = 1;
    private int status_ = 0;
    /**
     * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
     * @return The enum numeric value on the wire for status.
     */
    @java.lang.Override public int getStatusValue() {
      return status_;
    }
    /**
     * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
     * @return The status.
     */
    @java.lang.Override public org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status getStatus() {
      org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status result = org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status.forNumber(status_);
      return result == null ? org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (status_ != org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status.UNSPECIFIED.getNumber()) {
        output.writeEnum(1, status_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (status_ != org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status.UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, status_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.arrow.flight.impl.Flight.CloseSessionResult)) {
        return super.equals(obj);
      }
      org.apache.arrow.flight.impl.Flight.CloseSessionResult other = (org.apache.arrow.flight.impl.Flight.CloseSessionResult) obj;

      if (status_ != other.status_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult 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 org.apache.arrow.flight.impl.Flight.CloseSessionResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult 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 org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.arrow.flight.impl.Flight.CloseSessionResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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>
     *
     * The result of closing a session.
     * </pre>
     *
     * Protobuf type {@code arrow.flight.protocol.CloseSessionResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:arrow.flight.protocol.CloseSessionResult)
        org.apache.arrow.flight.impl.Flight.CloseSessionResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.arrow.flight.impl.Flight.CloseSessionResult.class, org.apache.arrow.flight.impl.Flight.CloseSessionResult.Builder.class);
      }

      // Construct using org.apache.arrow.flight.impl.Flight.CloseSessionResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        status_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.arrow.flight.impl.Flight.internal_static_arrow_flight_protocol_CloseSessionResult_descriptor;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CloseSessionResult getDefaultInstanceForType() {
        return org.apache.arrow.flight.impl.Flight.CloseSessionResult.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CloseSessionResult build() {
        org.apache.arrow.flight.impl.Flight.CloseSessionResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CloseSessionResult buildPartial() {
        org.apache.arrow.flight.impl.Flight.CloseSessionResult result = new org.apache.arrow.flight.impl.Flight.CloseSessionResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.arrow.flight.impl.Flight.CloseSessionResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.status_ = status_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.arrow.flight.impl.Flight.CloseSessionResult) {
          return mergeFrom((org.apache.arrow.flight.impl.Flight.CloseSessionResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.arrow.flight.impl.Flight.CloseSessionResult other) {
        if (other == org.apache.arrow.flight.impl.Flight.CloseSessionResult.getDefaultInstance()) return this;
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                status_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int status_ = 0;
      /**
       * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
       * @return The enum numeric value on the wire for status.
       */
      @java.lang.Override public int getStatusValue() {
        return status_;
      }
      /**
       * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        status_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
       * @return The status.
       */
      @java.lang.Override
      public org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status getStatus() {
        org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status result = org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status.forNumber(status_);
        return result == null ? org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status.UNRECOGNIZED : result;
      }
      /**
       * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(org.apache.arrow.flight.impl.Flight.CloseSessionResult.Status value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.arrow.flight.protocol.CloseSessionResult.Status status = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000001);
        status_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:arrow.flight.protocol.CloseSessionResult)
    }

    // @@protoc_insertion_point(class_scope:arrow.flight.protocol.CloseSessionResult)
    private static final org.apache.arrow.flight.impl.Flight.CloseSessionResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.arrow.flight.impl.Flight.CloseSessionResult();
    }

    public static org.apache.arrow.flight.impl.Flight.CloseSessionResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CloseSessionResult>
        PARSER = new com.google.protobuf.AbstractParser<CloseSessionResult>() {
      @java.lang.Override
      public CloseSessionResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public org.apache.arrow.flight.impl.Flight.CloseSessionResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_HandshakeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_HandshakeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_HandshakeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_HandshakeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_BasicAuth_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_BasicAuth_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_Empty_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_Empty_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_ActionType_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_ActionType_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_Criteria_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_Criteria_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_Action_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_Action_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_Result_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_Result_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_SchemaResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_SchemaResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_FlightDescriptor_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_FlightDescriptor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_FlightInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_FlightInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_PollInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_PollInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_CancelFlightInfoRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_CancelFlightInfoRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_CancelFlightInfoResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_CancelFlightInfoResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_Ticket_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_Ticket_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_Location_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_Location_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_FlightEndpoint_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_FlightEndpoint_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_FlightData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_FlightData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_PutResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_PutResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_SessionOptionValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_SessionOptionValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_SetSessionOptionsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_SetSessionOptionsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_SetSessionOptionsRequest_SessionOptionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_SetSessionOptionsRequest_SessionOptionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_SetSessionOptionsResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_ErrorsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_SetSessionOptionsResult_ErrorsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_GetSessionOptionsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_GetSessionOptionsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_GetSessionOptionsResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_GetSessionOptionsResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_GetSessionOptionsResult_SessionOptionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_GetSessionOptionsResult_SessionOptionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_CloseSessionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_CloseSessionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_arrow_flight_protocol_CloseSessionResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_arrow_flight_protocol_CloseSessionResult_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\014Flight.proto\022\025arrow.flight.protocol\032\037g" +
      "oogle/protobuf/timestamp.proto\"=\n\020Handsh" +
      "akeRequest\022\030\n\020protocol_version\030\001 \001(\004\022\017\n\007" +
      "payload\030\002 \001(\014\">\n\021HandshakeResponse\022\030\n\020pr" +
      "otocol_version\030\001 \001(\004\022\017\n\007payload\030\002 \001(\014\"/\n" +
      "\tBasicAuth\022\020\n\010username\030\002 \001(\t\022\020\n\010password" +
      "\030\003 \001(\t\"\007\n\005Empty\"/\n\nActionType\022\014\n\004type\030\001 " +
      "\001(\t\022\023\n\013description\030\002 \001(\t\"\036\n\010Criteria\022\022\n\n" +
      "expression\030\001 \001(\014\"$\n\006Action\022\014\n\004type\030\001 \001(\t" +
      "\022\014\n\004body\030\002 \001(\014\"\026\n\006Result\022\014\n\004body\030\001 \001(\014\"\036" +
      "\n\014SchemaResult\022\016\n\006schema\030\001 \001(\014\"\245\001\n\020Fligh" +
      "tDescriptor\022D\n\004type\030\001 \001(\01626.arrow.flight" +
      ".protocol.FlightDescriptor.DescriptorTyp" +
      "e\022\013\n\003cmd\030\002 \001(\014\022\014\n\004path\030\003 \003(\t\"0\n\016Descript" +
      "orType\022\013\n\007UNKNOWN\020\000\022\010\n\004PATH\020\001\022\007\n\003CMD\020\002\"\354" +
      "\001\n\nFlightInfo\022\016\n\006schema\030\001 \001(\014\022B\n\021flight_" +
      "descriptor\030\002 \001(\0132\'.arrow.flight.protocol" +
      ".FlightDescriptor\0227\n\010endpoint\030\003 \003(\0132%.ar" +
      "row.flight.protocol.FlightEndpoint\022\025\n\rto" +
      "tal_records\030\004 \001(\003\022\023\n\013total_bytes\030\005 \001(\003\022\017" +
      "\n\007ordered\030\006 \001(\010\022\024\n\014app_metadata\030\007 \001(\014\"\330\001" +
      "\n\010PollInfo\022/\n\004info\030\001 \001(\0132!.arrow.flight." +
      "protocol.FlightInfo\022B\n\021flight_descriptor" +
      "\030\002 \001(\0132\'.arrow.flight.protocol.FlightDes" +
      "criptor\022\025\n\010progress\030\003 \001(\001H\000\210\001\001\0223\n\017expira" +
      "tion_time\030\004 \001(\0132\032.google.protobuf.Timest" +
      "ampB\013\n\t_progress\"J\n\027CancelFlightInfoRequ" +
      "est\022/\n\004info\030\001 \001(\0132!.arrow.flight.protoco" +
      "l.FlightInfo\"M\n\026CancelFlightInfoResult\0223" +
      "\n\006status\030\001 \001(\0162#.arrow.flight.protocol.C" +
      "ancelStatus\"\030\n\006Ticket\022\016\n\006ticket\030\001 \001(\014\"\027\n" +
      "\010Location\022\013\n\003uri\030\001 \001(\t\"\275\001\n\016FlightEndpoin" +
      "t\022-\n\006ticket\030\001 \001(\0132\035.arrow.flight.protoco" +
      "l.Ticket\0221\n\010location\030\002 \003(\0132\037.arrow.fligh" +
      "t.protocol.Location\0223\n\017expiration_time\030\003" +
      " \001(\0132\032.google.protobuf.Timestamp\022\024\n\014app_" +
      "metadata\030\004 \001(\014\"U\n\032RenewFlightEndpointReq" +
      "uest\0227\n\010endpoint\030\001 \001(\0132%.arrow.flight.pr" +
      "otocol.FlightEndpoint\"\217\001\n\nFlightData\022B\n\021" +
      "flight_descriptor\030\001 \001(\0132\'.arrow.flight.p" +
      "rotocol.FlightDescriptor\022\023\n\013data_header\030" +
      "\002 \001(\014\022\024\n\014app_metadata\030\003 \001(\014\022\022\n\tdata_body" +
      "\030\350\007 \001(\014\"!\n\tPutResult\022\024\n\014app_metadata\030\001 \001" +
      "(\014\"\374\001\n\022SessionOptionValue\022\026\n\014string_valu" +
      "e\030\001 \001(\tH\000\022\024\n\nbool_value\030\002 \001(\010H\000\022\025\n\013int64" +
      "_value\030\003 \001(\020H\000\022\026\n\014double_value\030\004 \001(\001H\000\022V" +
      "\n\021string_list_value\030\005 \001(\01329.arrow.flight" +
      ".protocol.SessionOptionValue.StringListV" +
      "alueH\000\032!\n\017StringListValue\022\016\n\006values\030\001 \003(" +
      "\tB\016\n\014option_value\"\332\001\n\030SetSessionOptionsR" +
      "equest\022\\\n\017session_options\030\001 \003(\0132C.arrow." +
      "flight.protocol.SetSessionOptionsRequest" +
      ".SessionOptionsEntry\032`\n\023SessionOptionsEn" +
      "try\022\013\n\003key\030\001 \001(\t\0228\n\005value\030\002 \001(\0132).arrow." +
      "flight.protocol.SessionOptionValue:\0028\001\"\354" +
      "\002\n\027SetSessionOptionsResult\022J\n\006errors\030\001 \003" +
      "(\0132:.arrow.flight.protocol.SetSessionOpt" +
      "ionsResult.ErrorsEntry\032Q\n\005Error\022H\n\005value" +
      "\030\001 \001(\01629.arrow.flight.protocol.SetSessio" +
      "nOptionsResult.ErrorValue\032c\n\013ErrorsEntry" +
      "\022\013\n\003key\030\001 \001(\t\022C\n\005value\030\002 \001(\01324.arrow.fli" +
      "ght.protocol.SetSessionOptionsResult.Err" +
      "or:\0028\001\"M\n\nErrorValue\022\017\n\013UNSPECIFIED\020\000\022\020\n" +
      "\014INVALID_NAME\020\001\022\021\n\rINVALID_VALUE\020\002\022\t\n\005ER" +
      "ROR\020\003\"\032\n\030GetSessionOptionsRequest\"\330\001\n\027Ge" +
      "tSessionOptionsResult\022[\n\017session_options" +
      "\030\001 \003(\0132B.arrow.flight.protocol.GetSessio" +
      "nOptionsResult.SessionOptionsEntry\032`\n\023Se" +
      "ssionOptionsEntry\022\013\n\003key\030\001 \001(\t\0228\n\005value\030" +
      "\002 \001(\0132).arrow.flight.protocol.SessionOpt" +
      "ionValue:\0028\001\"\025\n\023CloseSessionRequest\"\235\001\n\022" +
      "CloseSessionResult\022@\n\006status\030\001 \001(\01620.arr" +
      "ow.flight.protocol.CloseSessionResult.St" +
      "atus\"E\n\006Status\022\017\n\013UNSPECIFIED\020\000\022\n\n\006CLOSE" +
      "D\020\001\022\013\n\007CLOSING\020\002\022\021\n\rNOT_CLOSEABLE\020\003*\213\001\n\014" +
      "CancelStatus\022\035\n\031CANCEL_STATUS_UNSPECIFIE" +
      "D\020\000\022\033\n\027CANCEL_STATUS_CANCELLED\020\001\022\034\n\030CANC" +
      "EL_STATUS_CANCELLING\020\002\022!\n\035CANCEL_STATUS_" +
      "NOT_CANCELLABLE\020\0032\205\007\n\rFlightService\022d\n\tH" +
      "andshake\022\'.arrow.flight.protocol.Handsha" +
      "keRequest\032(.arrow.flight.protocol.Handsh" +
      "akeResponse\"\000(\0010\001\022U\n\013ListFlights\022\037.arrow" +
      ".flight.protocol.Criteria\032!.arrow.flight" +
      ".protocol.FlightInfo\"\0000\001\022]\n\rGetFlightInf" +
      "o\022\'.arrow.flight.protocol.FlightDescript" +
      "or\032!.arrow.flight.protocol.FlightInfo\"\000\022" +
      "\\\n\016PollFlightInfo\022\'.arrow.flight.protoco" +
      "l.FlightDescriptor\032\037.arrow.flight.protoc" +
      "ol.PollInfo\"\000\022[\n\tGetSchema\022\'.arrow.fligh" +
      "t.protocol.FlightDescriptor\032#.arrow.flig" +
      "ht.protocol.SchemaResult\"\000\022M\n\005DoGet\022\035.ar" +
      "row.flight.protocol.Ticket\032!.arrow.fligh" +
      "t.protocol.FlightData\"\0000\001\022R\n\005DoPut\022!.arr" +
      "ow.flight.protocol.FlightData\032 .arrow.fl" +
      "ight.protocol.PutResult\"\000(\0010\001\022X\n\nDoExcha" +
      "nge\022!.arrow.flight.protocol.FlightData\032!" +
      ".arrow.flight.protocol.FlightData\"\000(\0010\001\022" +
      "L\n\010DoAction\022\035.arrow.flight.protocol.Acti" +
      "on\032\035.arrow.flight.protocol.Result\"\0000\001\022R\n" +
      "\013ListActions\022\034.arrow.flight.protocol.Emp" +
      "ty\032!.arrow.flight.protocol.ActionType\"\0000" +
      "\001Bq\n\034org.apache.arrow.flight.implZ2githu" +
      "b.com/apache/arrow/go/arrow/flight/gen/f" +
      "light\252\002\034Apache.Arrow.Flight.Protocolb\006pr" +
      "oto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.TimestampProto.getDescriptor(),
        });
    internal_static_arrow_flight_protocol_HandshakeRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_arrow_flight_protocol_HandshakeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_HandshakeRequest_descriptor,
        new java.lang.String[] { "ProtocolVersion", "Payload", });
    internal_static_arrow_flight_protocol_HandshakeResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_arrow_flight_protocol_HandshakeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_HandshakeResponse_descriptor,
        new java.lang.String[] { "ProtocolVersion", "Payload", });
    internal_static_arrow_flight_protocol_BasicAuth_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_arrow_flight_protocol_BasicAuth_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_BasicAuth_descriptor,
        new java.lang.String[] { "Username", "Password", });
    internal_static_arrow_flight_protocol_Empty_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_arrow_flight_protocol_Empty_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_Empty_descriptor,
        new java.lang.String[] { });
    internal_static_arrow_flight_protocol_ActionType_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_arrow_flight_protocol_ActionType_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_ActionType_descriptor,
        new java.lang.String[] { "Type", "Description", });
    internal_static_arrow_flight_protocol_Criteria_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_arrow_flight_protocol_Criteria_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_Criteria_descriptor,
        new java.lang.String[] { "Expression", });
    internal_static_arrow_flight_protocol_Action_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_arrow_flight_protocol_Action_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_Action_descriptor,
        new java.lang.String[] { "Type", "Body", });
    internal_static_arrow_flight_protocol_Result_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_arrow_flight_protocol_Result_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_Result_descriptor,
        new java.lang.String[] { "Body", });
    internal_static_arrow_flight_protocol_SchemaResult_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_arrow_flight_protocol_SchemaResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_SchemaResult_descriptor,
        new java.lang.String[] { "Schema", });
    internal_static_arrow_flight_protocol_FlightDescriptor_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_arrow_flight_protocol_FlightDescriptor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_FlightDescriptor_descriptor,
        new java.lang.String[] { "Type", "Cmd", "Path", });
    internal_static_arrow_flight_protocol_FlightInfo_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_arrow_flight_protocol_FlightInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_FlightInfo_descriptor,
        new java.lang.String[] { "Schema", "FlightDescriptor", "Endpoint", "TotalRecords", "TotalBytes", "Ordered", "AppMetadata", });
    internal_static_arrow_flight_protocol_PollInfo_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_arrow_flight_protocol_PollInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_PollInfo_descriptor,
        new java.lang.String[] { "Info", "FlightDescriptor", "Progress", "ExpirationTime", });
    internal_static_arrow_flight_protocol_CancelFlightInfoRequest_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_arrow_flight_protocol_CancelFlightInfoRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_CancelFlightInfoRequest_descriptor,
        new java.lang.String[] { "Info", });
    internal_static_arrow_flight_protocol_CancelFlightInfoResult_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_arrow_flight_protocol_CancelFlightInfoResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_CancelFlightInfoResult_descriptor,
        new java.lang.String[] { "Status", });
    internal_static_arrow_flight_protocol_Ticket_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_arrow_flight_protocol_Ticket_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_Ticket_descriptor,
        new java.lang.String[] { "Ticket", });
    internal_static_arrow_flight_protocol_Location_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_arrow_flight_protocol_Location_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_Location_descriptor,
        new java.lang.String[] { "Uri", });
    internal_static_arrow_flight_protocol_FlightEndpoint_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_arrow_flight_protocol_FlightEndpoint_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_FlightEndpoint_descriptor,
        new java.lang.String[] { "Ticket", "Location", "ExpirationTime", "AppMetadata", });
    internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_RenewFlightEndpointRequest_descriptor,
        new java.lang.String[] { "Endpoint", });
    internal_static_arrow_flight_protocol_FlightData_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_arrow_flight_protocol_FlightData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_FlightData_descriptor,
        new java.lang.String[] { "FlightDescriptor", "DataHeader", "AppMetadata", "DataBody", });
    internal_static_arrow_flight_protocol_PutResult_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_arrow_flight_protocol_PutResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_PutResult_descriptor,
        new java.lang.String[] { "AppMetadata", });
    internal_static_arrow_flight_protocol_SessionOptionValue_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_arrow_flight_protocol_SessionOptionValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_SessionOptionValue_descriptor,
        new java.lang.String[] { "StringValue", "BoolValue", "Int64Value", "DoubleValue", "StringListValue", "OptionValue", });
    internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_descriptor =
      internal_static_arrow_flight_protocol_SessionOptionValue_descriptor.getNestedTypes().get(0);
    internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_SessionOptionValue_StringListValue_descriptor,
        new java.lang.String[] { "Values", });
    internal_static_arrow_flight_protocol_SetSessionOptionsRequest_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_arrow_flight_protocol_SetSessionOptionsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_SetSessionOptionsRequest_descriptor,
        new java.lang.String[] { "SessionOptions", });
    internal_static_arrow_flight_protocol_SetSessionOptionsRequest_SessionOptionsEntry_descriptor =
      internal_static_arrow_flight_protocol_SetSessionOptionsRequest_descriptor.getNestedTypes().get(0);
    internal_static_arrow_flight_protocol_SetSessionOptionsRequest_SessionOptionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_SetSessionOptionsRequest_SessionOptionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_SetSessionOptionsResult_descriptor,
        new java.lang.String[] { "Errors", });
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_descriptor =
      internal_static_arrow_flight_protocol_SetSessionOptionsResult_descriptor.getNestedTypes().get(0);
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_SetSessionOptionsResult_Error_descriptor,
        new java.lang.String[] { "Value", });
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_ErrorsEntry_descriptor =
      internal_static_arrow_flight_protocol_SetSessionOptionsResult_descriptor.getNestedTypes().get(1);
    internal_static_arrow_flight_protocol_SetSessionOptionsResult_ErrorsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_SetSessionOptionsResult_ErrorsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_arrow_flight_protocol_GetSessionOptionsRequest_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_arrow_flight_protocol_GetSessionOptionsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_GetSessionOptionsRequest_descriptor,
        new java.lang.String[] { });
    internal_static_arrow_flight_protocol_GetSessionOptionsResult_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_arrow_flight_protocol_GetSessionOptionsResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_GetSessionOptionsResult_descriptor,
        new java.lang.String[] { "SessionOptions", });
    internal_static_arrow_flight_protocol_GetSessionOptionsResult_SessionOptionsEntry_descriptor =
      internal_static_arrow_flight_protocol_GetSessionOptionsResult_descriptor.getNestedTypes().get(0);
    internal_static_arrow_flight_protocol_GetSessionOptionsResult_SessionOptionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_GetSessionOptionsResult_SessionOptionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_arrow_flight_protocol_CloseSessionRequest_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_arrow_flight_protocol_CloseSessionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_CloseSessionRequest_descriptor,
        new java.lang.String[] { });
    internal_static_arrow_flight_protocol_CloseSessionResult_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_arrow_flight_protocol_CloseSessionResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_arrow_flight_protocol_CloseSessionResult_descriptor,
        new java.lang.String[] { "Status", });
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}