// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: grpc/channelz/v1/channelz.proto

package io.grpc.channelz.v1;

/**
 * <pre>
 * Address represents the address used to create the socket.
 * </pre>
 *
 * Protobuf type {@code grpc.channelz.v1.Address}
 */
public  final class Address extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:grpc.channelz.v1.Address)
    AddressOrBuilder {
private static final long serialVersionUID = 0L;
  // Use Address.newBuilder() to construct.
  private Address(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private Address() {
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet
  getUnknownFields() {
    return this.unknownFields;
  }
  private Address(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new java.lang.NullPointerException();
    }
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          default: {
            if (!parseUnknownFieldProto3(
                input, unknownFields, extensionRegistry, tag)) {
              done = true;
            }
            break;
          }
          case 10: {
            io.grpc.channelz.v1.Address.TcpIpAddress.Builder subBuilder = null;
            if (addressCase_ == 1) {
              subBuilder = ((io.grpc.channelz.v1.Address.TcpIpAddress) address_).toBuilder();
            }
            address_ =
                input.readMessage(io.grpc.channelz.v1.Address.TcpIpAddress.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom((io.grpc.channelz.v1.Address.TcpIpAddress) address_);
              address_ = subBuilder.buildPartial();
            }
            addressCase_ = 1;
            break;
          }
          case 18: {
            io.grpc.channelz.v1.Address.UdsAddress.Builder subBuilder = null;
            if (addressCase_ == 2) {
              subBuilder = ((io.grpc.channelz.v1.Address.UdsAddress) address_).toBuilder();
            }
            address_ =
                input.readMessage(io.grpc.channelz.v1.Address.UdsAddress.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom((io.grpc.channelz.v1.Address.UdsAddress) address_);
              address_ = subBuilder.buildPartial();
            }
            addressCase_ = 2;
            break;
          }
          case 26: {
            io.grpc.channelz.v1.Address.OtherAddress.Builder subBuilder = null;
            if (addressCase_ == 3) {
              subBuilder = ((io.grpc.channelz.v1.Address.OtherAddress) address_).toBuilder();
            }
            address_ =
                input.readMessage(io.grpc.channelz.v1.Address.OtherAddress.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom((io.grpc.channelz.v1.Address.OtherAddress) address_);
              address_ = subBuilder.buildPartial();
            }
            addressCase_ = 3;
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e).setUnfinishedMessage(this);
    } finally {
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_descriptor;
  }

  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            io.grpc.channelz.v1.Address.class, io.grpc.channelz.v1.Address.Builder.class);
  }

  public interface TcpIpAddressOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.channelz.v1.Address.TcpIpAddress)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Either the IPv4 or IPv6 address in bytes.  Will be either 4 bytes or 16
     * bytes in length.
     * </pre>
     *
     * <code>bytes ip_address = 1;</code>
     */
    com.google.protobuf.ByteString getIpAddress();

    /**
     * <pre>
     * 0-64k, or -1 if not appropriate.
     * </pre>
     *
     * <code>int32 port = 2;</code>
     */
    int getPort();
  }
  /**
   * Protobuf type {@code grpc.channelz.v1.Address.TcpIpAddress}
   */
  public  static final class TcpIpAddress extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.channelz.v1.Address.TcpIpAddress)
      TcpIpAddressOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TcpIpAddress.newBuilder() to construct.
    private TcpIpAddress(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TcpIpAddress() {
      ipAddress_ = com.google.protobuf.ByteString.EMPTY;
      port_ = 0;
    }

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

              ipAddress_ = input.readBytes();
              break;
            }
            case 16: {

              port_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_TcpIpAddress_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_TcpIpAddress_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.channelz.v1.Address.TcpIpAddress.class, io.grpc.channelz.v1.Address.TcpIpAddress.Builder.class);
    }

    public static final int IP_ADDRESS_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString ipAddress_;
    /**
     * <pre>
     * Either the IPv4 or IPv6 address in bytes.  Will be either 4 bytes or 16
     * bytes in length.
     * </pre>
     *
     * <code>bytes ip_address = 1;</code>
     */
    public com.google.protobuf.ByteString getIpAddress() {
      return ipAddress_;
    }

    public static final int PORT_FIELD_NUMBER = 2;
    private int port_;
    /**
     * <pre>
     * 0-64k, or -1 if not appropriate.
     * </pre>
     *
     * <code>int32 port = 2;</code>
     */
    public int getPort() {
      return port_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!ipAddress_.isEmpty()) {
        output.writeBytes(1, ipAddress_);
      }
      if (port_ != 0) {
        output.writeInt32(2, port_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!ipAddress_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, ipAddress_);
      }
      if (port_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, port_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.channelz.v1.Address.TcpIpAddress)) {
        return super.equals(obj);
      }
      io.grpc.channelz.v1.Address.TcpIpAddress other = (io.grpc.channelz.v1.Address.TcpIpAddress) obj;

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

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

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.grpc.channelz.v1.Address.TcpIpAddress prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code grpc.channelz.v1.Address.TcpIpAddress}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.channelz.v1.Address.TcpIpAddress)
        io.grpc.channelz.v1.Address.TcpIpAddressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_TcpIpAddress_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_TcpIpAddress_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.channelz.v1.Address.TcpIpAddress.class, io.grpc.channelz.v1.Address.TcpIpAddress.Builder.class);
      }

      // Construct using io.grpc.channelz.v1.Address.TcpIpAddress.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        port_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_TcpIpAddress_descriptor;
      }

      public io.grpc.channelz.v1.Address.TcpIpAddress getDefaultInstanceForType() {
        return io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance();
      }

      public io.grpc.channelz.v1.Address.TcpIpAddress build() {
        io.grpc.channelz.v1.Address.TcpIpAddress result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.channelz.v1.Address.TcpIpAddress buildPartial() {
        io.grpc.channelz.v1.Address.TcpIpAddress result = new io.grpc.channelz.v1.Address.TcpIpAddress(this);
        result.ipAddress_ = ipAddress_;
        result.port_ = port_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(io.grpc.channelz.v1.Address.TcpIpAddress other) {
        if (other == io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance()) return this;
        if (other.getIpAddress() != com.google.protobuf.ByteString.EMPTY) {
          setIpAddress(other.getIpAddress());
        }
        if (other.getPort() != 0) {
          setPort(other.getPort());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.grpc.channelz.v1.Address.TcpIpAddress parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.channelz.v1.Address.TcpIpAddress) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.google.protobuf.ByteString ipAddress_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Either the IPv4 or IPv6 address in bytes.  Will be either 4 bytes or 16
       * bytes in length.
       * </pre>
       *
       * <code>bytes ip_address = 1;</code>
       */
      public com.google.protobuf.ByteString getIpAddress() {
        return ipAddress_;
      }
      /**
       * <pre>
       * Either the IPv4 or IPv6 address in bytes.  Will be either 4 bytes or 16
       * bytes in length.
       * </pre>
       *
       * <code>bytes ip_address = 1;</code>
       */
      public Builder setIpAddress(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ipAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Either the IPv4 or IPv6 address in bytes.  Will be either 4 bytes or 16
       * bytes in length.
       * </pre>
       *
       * <code>bytes ip_address = 1;</code>
       */
      public Builder clearIpAddress() {
        
        ipAddress_ = getDefaultInstance().getIpAddress();
        onChanged();
        return this;
      }

      private int port_ ;
      /**
       * <pre>
       * 0-64k, or -1 if not appropriate.
       * </pre>
       *
       * <code>int32 port = 2;</code>
       */
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * 0-64k, or -1 if not appropriate.
       * </pre>
       *
       * <code>int32 port = 2;</code>
       */
      public Builder setPort(int value) {
        
        port_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 0-64k, or -1 if not appropriate.
       * </pre>
       *
       * <code>int32 port = 2;</code>
       */
      public Builder clearPort() {
        
        port_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.channelz.v1.Address.TcpIpAddress)
    }

    // @@protoc_insertion_point(class_scope:grpc.channelz.v1.Address.TcpIpAddress)
    private static final io.grpc.channelz.v1.Address.TcpIpAddress DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.channelz.v1.Address.TcpIpAddress();
    }

    public static io.grpc.channelz.v1.Address.TcpIpAddress getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.channelz.v1.Address.TcpIpAddress getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UdsAddressOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.channelz.v1.Address.UdsAddress)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string filename = 1;</code>
     */
    java.lang.String getFilename();
    /**
     * <code>string filename = 1;</code>
     */
    com.google.protobuf.ByteString
        getFilenameBytes();
  }
  /**
   * <pre>
   * A Unix Domain Socket address.
   * </pre>
   *
   * Protobuf type {@code grpc.channelz.v1.Address.UdsAddress}
   */
  public  static final class UdsAddress extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.channelz.v1.Address.UdsAddress)
      UdsAddressOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UdsAddress.newBuilder() to construct.
    private UdsAddress(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UdsAddress() {
      filename_ = "";
    }

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

              filename_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_UdsAddress_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_UdsAddress_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.channelz.v1.Address.UdsAddress.class, io.grpc.channelz.v1.Address.UdsAddress.Builder.class);
    }

    public static final int FILENAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object filename_;
    /**
     * <code>string filename = 1;</code>
     */
    public java.lang.String getFilename() {
      java.lang.Object ref = filename_;
      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();
        filename_ = s;
        return s;
      }
    }
    /**
     * <code>string filename = 1;</code>
     */
    public com.google.protobuf.ByteString
        getFilenameBytes() {
      java.lang.Object ref = filename_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        filename_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getFilenameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, filename_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getFilenameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, filename_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.channelz.v1.Address.UdsAddress)) {
        return super.equals(obj);
      }
      io.grpc.channelz.v1.Address.UdsAddress other = (io.grpc.channelz.v1.Address.UdsAddress) obj;

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

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

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.grpc.channelz.v1.Address.UdsAddress prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A Unix Domain Socket address.
     * </pre>
     *
     * Protobuf type {@code grpc.channelz.v1.Address.UdsAddress}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.channelz.v1.Address.UdsAddress)
        io.grpc.channelz.v1.Address.UdsAddressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_UdsAddress_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_UdsAddress_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.channelz.v1.Address.UdsAddress.class, io.grpc.channelz.v1.Address.UdsAddress.Builder.class);
      }

      // Construct using io.grpc.channelz.v1.Address.UdsAddress.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_UdsAddress_descriptor;
      }

      public io.grpc.channelz.v1.Address.UdsAddress getDefaultInstanceForType() {
        return io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance();
      }

      public io.grpc.channelz.v1.Address.UdsAddress build() {
        io.grpc.channelz.v1.Address.UdsAddress result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.channelz.v1.Address.UdsAddress buildPartial() {
        io.grpc.channelz.v1.Address.UdsAddress result = new io.grpc.channelz.v1.Address.UdsAddress(this);
        result.filename_ = filename_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(io.grpc.channelz.v1.Address.UdsAddress other) {
        if (other == io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance()) return this;
        if (!other.getFilename().isEmpty()) {
          filename_ = other.filename_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.grpc.channelz.v1.Address.UdsAddress parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.channelz.v1.Address.UdsAddress) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object filename_ = "";
      /**
       * <code>string filename = 1;</code>
       */
      public java.lang.String getFilename() {
        java.lang.Object ref = filename_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          filename_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string filename = 1;</code>
       */
      public com.google.protobuf.ByteString
          getFilenameBytes() {
        java.lang.Object ref = filename_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          filename_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string filename = 1;</code>
       */
      public Builder setFilename(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        filename_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string filename = 1;</code>
       */
      public Builder clearFilename() {
        
        filename_ = getDefaultInstance().getFilename();
        onChanged();
        return this;
      }
      /**
       * <code>string filename = 1;</code>
       */
      public Builder setFilenameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        filename_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.channelz.v1.Address.UdsAddress)
    }

    // @@protoc_insertion_point(class_scope:grpc.channelz.v1.Address.UdsAddress)
    private static final io.grpc.channelz.v1.Address.UdsAddress DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.channelz.v1.Address.UdsAddress();
    }

    public static io.grpc.channelz.v1.Address.UdsAddress getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.channelz.v1.Address.UdsAddress getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OtherAddressOrBuilder extends
      // @@protoc_insertion_point(interface_extends:grpc.channelz.v1.Address.OtherAddress)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The human readable version of the value.  This value should be set.
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * The human readable version of the value.  This value should be set.
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The actual address message.
     * </pre>
     *
     * <code>.google.protobuf.Any value = 2;</code>
     */
    boolean hasValue();
    /**
     * <pre>
     * The actual address message.
     * </pre>
     *
     * <code>.google.protobuf.Any value = 2;</code>
     */
    com.google.protobuf.Any getValue();
    /**
     * <pre>
     * The actual address message.
     * </pre>
     *
     * <code>.google.protobuf.Any value = 2;</code>
     */
    com.google.protobuf.AnyOrBuilder getValueOrBuilder();
  }
  /**
   * <pre>
   * An address type not included above.
   * </pre>
   *
   * Protobuf type {@code grpc.channelz.v1.Address.OtherAddress}
   */
  public  static final class OtherAddress extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:grpc.channelz.v1.Address.OtherAddress)
      OtherAddressOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use OtherAddress.newBuilder() to construct.
    private OtherAddress(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private OtherAddress() {
      name_ = "";
    }

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

              name_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Any.Builder subBuilder = null;
              if (value_ != null) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(com.google.protobuf.Any.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(value_);
                value_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_OtherAddress_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_OtherAddress_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.channelz.v1.Address.OtherAddress.class, io.grpc.channelz.v1.Address.OtherAddress.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * The human readable version of the value.  This value should be set.
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The human readable version of the value.  This value should be set.
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.Any value_;
    /**
     * <pre>
     * The actual address message.
     * </pre>
     *
     * <code>.google.protobuf.Any value = 2;</code>
     */
    public boolean hasValue() {
      return value_ != null;
    }
    /**
     * <pre>
     * The actual address message.
     * </pre>
     *
     * <code>.google.protobuf.Any value = 2;</code>
     */
    public com.google.protobuf.Any getValue() {
      return value_ == null ? com.google.protobuf.Any.getDefaultInstance() : value_;
    }
    /**
     * <pre>
     * The actual address message.
     * </pre>
     *
     * <code>.google.protobuf.Any value = 2;</code>
     */
    public com.google.protobuf.AnyOrBuilder getValueOrBuilder() {
      return getValue();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (value_ != null) {
        output.writeMessage(2, getValue());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (value_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getValue());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.grpc.channelz.v1.Address.OtherAddress)) {
        return super.equals(obj);
      }
      io.grpc.channelz.v1.Address.OtherAddress other = (io.grpc.channelz.v1.Address.OtherAddress) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && (hasValue() == other.hasValue());
      if (hasValue()) {
        result = result && getValue()
            .equals(other.getValue());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.grpc.channelz.v1.Address.OtherAddress prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * An address type not included above.
     * </pre>
     *
     * Protobuf type {@code grpc.channelz.v1.Address.OtherAddress}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:grpc.channelz.v1.Address.OtherAddress)
        io.grpc.channelz.v1.Address.OtherAddressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_OtherAddress_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_OtherAddress_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.grpc.channelz.v1.Address.OtherAddress.class, io.grpc.channelz.v1.Address.OtherAddress.Builder.class);
      }

      // Construct using io.grpc.channelz.v1.Address.OtherAddress.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        if (valueBuilder_ == null) {
          value_ = null;
        } else {
          value_ = null;
          valueBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_OtherAddress_descriptor;
      }

      public io.grpc.channelz.v1.Address.OtherAddress getDefaultInstanceForType() {
        return io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance();
      }

      public io.grpc.channelz.v1.Address.OtherAddress build() {
        io.grpc.channelz.v1.Address.OtherAddress result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.grpc.channelz.v1.Address.OtherAddress buildPartial() {
        io.grpc.channelz.v1.Address.OtherAddress result = new io.grpc.channelz.v1.Address.OtherAddress(this);
        result.name_ = name_;
        if (valueBuilder_ == null) {
          result.value_ = value_;
        } else {
          result.value_ = valueBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(io.grpc.channelz.v1.Address.OtherAddress other) {
        if (other == io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.grpc.channelz.v1.Address.OtherAddress parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.grpc.channelz.v1.Address.OtherAddress) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The human readable version of the value.  This value should be set.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The human readable version of the value.  This value should be set.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The human readable version of the value.  This value should be set.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The human readable version of the value.  This value should be set.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The human readable version of the value.  This value should be set.
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Any value_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> valueBuilder_;
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      public boolean hasValue() {
        return valueBuilder_ != null || value_ != null;
      }
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      public com.google.protobuf.Any getValue() {
        if (valueBuilder_ == null) {
          return value_ == null ? com.google.protobuf.Any.getDefaultInstance() : value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      public Builder setValue(com.google.protobuf.Any value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          valueBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      public Builder setValue(
          com.google.protobuf.Any.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      public Builder mergeValue(com.google.protobuf.Any value) {
        if (valueBuilder_ == null) {
          if (value_ != null) {
            value_ =
              com.google.protobuf.Any.newBuilder(value_).mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          valueBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      public Builder clearValue() {
        if (valueBuilder_ == null) {
          value_ = null;
          onChanged();
        } else {
          value_ = null;
          valueBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      public com.google.protobuf.Any.Builder getValueBuilder() {
        
        onChanged();
        return getValueFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      public com.google.protobuf.AnyOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_ == null ?
              com.google.protobuf.Any.getDefaultInstance() : value_;
        }
      }
      /**
       * <pre>
       * The actual address message.
       * </pre>
       *
       * <code>.google.protobuf.Any value = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder>(
                  getValue(),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:grpc.channelz.v1.Address.OtherAddress)
    }

    // @@protoc_insertion_point(class_scope:grpc.channelz.v1.Address.OtherAddress)
    private static final io.grpc.channelz.v1.Address.OtherAddress DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.grpc.channelz.v1.Address.OtherAddress();
    }

    public static io.grpc.channelz.v1.Address.OtherAddress getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public io.grpc.channelz.v1.Address.OtherAddress getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private int addressCase_ = 0;
  private java.lang.Object address_;
  public enum AddressCase
      implements com.google.protobuf.Internal.EnumLite {
    TCPIP_ADDRESS(1),
    UDS_ADDRESS(2),
    OTHER_ADDRESS(3),
    ADDRESS_NOT_SET(0);
    private final int value;
    private AddressCase(int value) {
      this.value = value;
    }
    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static AddressCase valueOf(int value) {
      return forNumber(value);
    }

    public static AddressCase forNumber(int value) {
      switch (value) {
        case 1: return TCPIP_ADDRESS;
        case 2: return UDS_ADDRESS;
        case 3: return OTHER_ADDRESS;
        case 0: return ADDRESS_NOT_SET;
        default: return null;
      }
    }
    public int getNumber() {
      return this.value;
    }
  };

  public AddressCase
  getAddressCase() {
    return AddressCase.forNumber(
        addressCase_);
  }

  public static final int TCPIP_ADDRESS_FIELD_NUMBER = 1;
  /**
   * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
   */
  public boolean hasTcpipAddress() {
    return addressCase_ == 1;
  }
  /**
   * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
   */
  public io.grpc.channelz.v1.Address.TcpIpAddress getTcpipAddress() {
    if (addressCase_ == 1) {
       return (io.grpc.channelz.v1.Address.TcpIpAddress) address_;
    }
    return io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance();
  }
  /**
   * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
   */
  public io.grpc.channelz.v1.Address.TcpIpAddressOrBuilder getTcpipAddressOrBuilder() {
    if (addressCase_ == 1) {
       return (io.grpc.channelz.v1.Address.TcpIpAddress) address_;
    }
    return io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance();
  }

  public static final int UDS_ADDRESS_FIELD_NUMBER = 2;
  /**
   * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
   */
  public boolean hasUdsAddress() {
    return addressCase_ == 2;
  }
  /**
   * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
   */
  public io.grpc.channelz.v1.Address.UdsAddress getUdsAddress() {
    if (addressCase_ == 2) {
       return (io.grpc.channelz.v1.Address.UdsAddress) address_;
    }
    return io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance();
  }
  /**
   * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
   */
  public io.grpc.channelz.v1.Address.UdsAddressOrBuilder getUdsAddressOrBuilder() {
    if (addressCase_ == 2) {
       return (io.grpc.channelz.v1.Address.UdsAddress) address_;
    }
    return io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance();
  }

  public static final int OTHER_ADDRESS_FIELD_NUMBER = 3;
  /**
   * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
   */
  public boolean hasOtherAddress() {
    return addressCase_ == 3;
  }
  /**
   * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
   */
  public io.grpc.channelz.v1.Address.OtherAddress getOtherAddress() {
    if (addressCase_ == 3) {
       return (io.grpc.channelz.v1.Address.OtherAddress) address_;
    }
    return io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance();
  }
  /**
   * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
   */
  public io.grpc.channelz.v1.Address.OtherAddressOrBuilder getOtherAddressOrBuilder() {
    if (addressCase_ == 3) {
       return (io.grpc.channelz.v1.Address.OtherAddress) address_;
    }
    return io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance();
  }

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

    memoizedIsInitialized = 1;
    return true;
  }

  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    if (addressCase_ == 1) {
      output.writeMessage(1, (io.grpc.channelz.v1.Address.TcpIpAddress) address_);
    }
    if (addressCase_ == 2) {
      output.writeMessage(2, (io.grpc.channelz.v1.Address.UdsAddress) address_);
    }
    if (addressCase_ == 3) {
      output.writeMessage(3, (io.grpc.channelz.v1.Address.OtherAddress) address_);
    }
    unknownFields.writeTo(output);
  }

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

    size = 0;
    if (addressCase_ == 1) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1, (io.grpc.channelz.v1.Address.TcpIpAddress) address_);
    }
    if (addressCase_ == 2) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(2, (io.grpc.channelz.v1.Address.UdsAddress) address_);
    }
    if (addressCase_ == 3) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(3, (io.grpc.channelz.v1.Address.OtherAddress) address_);
    }
    size += unknownFields.getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof io.grpc.channelz.v1.Address)) {
      return super.equals(obj);
    }
    io.grpc.channelz.v1.Address other = (io.grpc.channelz.v1.Address) obj;

    boolean result = true;
    result = result && getAddressCase().equals(
        other.getAddressCase());
    if (!result) return false;
    switch (addressCase_) {
      case 1:
        result = result && getTcpipAddress()
            .equals(other.getTcpipAddress());
        break;
      case 2:
        result = result && getUdsAddress()
            .equals(other.getUdsAddress());
        break;
      case 3:
        result = result && getOtherAddress()
            .equals(other.getOtherAddress());
        break;
      case 0:
      default:
    }
    result = result && unknownFields.equals(other.unknownFields);
    return result;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    switch (addressCase_) {
      case 1:
        hash = (37 * hash) + TCPIP_ADDRESS_FIELD_NUMBER;
        hash = (53 * hash) + getTcpipAddress().hashCode();
        break;
      case 2:
        hash = (37 * hash) + UDS_ADDRESS_FIELD_NUMBER;
        hash = (53 * hash) + getUdsAddress().hashCode();
        break;
      case 3:
        hash = (37 * hash) + OTHER_ADDRESS_FIELD_NUMBER;
        hash = (53 * hash) + getOtherAddress().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

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

  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(io.grpc.channelz.v1.Address prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * <pre>
   * Address represents the address used to create the socket.
   * </pre>
   *
   * Protobuf type {@code grpc.channelz.v1.Address}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:grpc.channelz.v1.Address)
      io.grpc.channelz.v1.AddressOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.grpc.channelz.v1.Address.class, io.grpc.channelz.v1.Address.Builder.class);
    }

    // Construct using io.grpc.channelz.v1.Address.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

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

    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return io.grpc.channelz.v1.ChannelzProto.internal_static_grpc_channelz_v1_Address_descriptor;
    }

    public io.grpc.channelz.v1.Address getDefaultInstanceForType() {
      return io.grpc.channelz.v1.Address.getDefaultInstance();
    }

    public io.grpc.channelz.v1.Address build() {
      io.grpc.channelz.v1.Address result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    public io.grpc.channelz.v1.Address buildPartial() {
      io.grpc.channelz.v1.Address result = new io.grpc.channelz.v1.Address(this);
      if (addressCase_ == 1) {
        if (tcpipAddressBuilder_ == null) {
          result.address_ = address_;
        } else {
          result.address_ = tcpipAddressBuilder_.build();
        }
      }
      if (addressCase_ == 2) {
        if (udsAddressBuilder_ == null) {
          result.address_ = address_;
        } else {
          result.address_ = udsAddressBuilder_.build();
        }
      }
      if (addressCase_ == 3) {
        if (otherAddressBuilder_ == null) {
          result.address_ = address_;
        } else {
          result.address_ = otherAddressBuilder_.build();
        }
      }
      result.addressCase_ = addressCase_;
      onBuilt();
      return result;
    }

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

    public Builder mergeFrom(io.grpc.channelz.v1.Address other) {
      if (other == io.grpc.channelz.v1.Address.getDefaultInstance()) return this;
      switch (other.getAddressCase()) {
        case TCPIP_ADDRESS: {
          mergeTcpipAddress(other.getTcpipAddress());
          break;
        }
        case UDS_ADDRESS: {
          mergeUdsAddress(other.getUdsAddress());
          break;
        }
        case OTHER_ADDRESS: {
          mergeOtherAddress(other.getOtherAddress());
          break;
        }
        case ADDRESS_NOT_SET: {
          break;
        }
      }
      this.mergeUnknownFields(other.unknownFields);
      onChanged();
      return this;
    }

    public final boolean isInitialized() {
      return true;
    }

    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      io.grpc.channelz.v1.Address parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (io.grpc.channelz.v1.Address) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int addressCase_ = 0;
    private java.lang.Object address_;
    public AddressCase
        getAddressCase() {
      return AddressCase.forNumber(
          addressCase_);
    }

    public Builder clearAddress() {
      addressCase_ = 0;
      address_ = null;
      onChanged();
      return this;
    }


    private com.google.protobuf.SingleFieldBuilderV3<
        io.grpc.channelz.v1.Address.TcpIpAddress, io.grpc.channelz.v1.Address.TcpIpAddress.Builder, io.grpc.channelz.v1.Address.TcpIpAddressOrBuilder> tcpipAddressBuilder_;
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    public boolean hasTcpipAddress() {
      return addressCase_ == 1;
    }
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    public io.grpc.channelz.v1.Address.TcpIpAddress getTcpipAddress() {
      if (tcpipAddressBuilder_ == null) {
        if (addressCase_ == 1) {
          return (io.grpc.channelz.v1.Address.TcpIpAddress) address_;
        }
        return io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance();
      } else {
        if (addressCase_ == 1) {
          return tcpipAddressBuilder_.getMessage();
        }
        return io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance();
      }
    }
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    public Builder setTcpipAddress(io.grpc.channelz.v1.Address.TcpIpAddress value) {
      if (tcpipAddressBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        address_ = value;
        onChanged();
      } else {
        tcpipAddressBuilder_.setMessage(value);
      }
      addressCase_ = 1;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    public Builder setTcpipAddress(
        io.grpc.channelz.v1.Address.TcpIpAddress.Builder builderForValue) {
      if (tcpipAddressBuilder_ == null) {
        address_ = builderForValue.build();
        onChanged();
      } else {
        tcpipAddressBuilder_.setMessage(builderForValue.build());
      }
      addressCase_ = 1;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    public Builder mergeTcpipAddress(io.grpc.channelz.v1.Address.TcpIpAddress value) {
      if (tcpipAddressBuilder_ == null) {
        if (addressCase_ == 1 &&
            address_ != io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance()) {
          address_ = io.grpc.channelz.v1.Address.TcpIpAddress.newBuilder((io.grpc.channelz.v1.Address.TcpIpAddress) address_)
              .mergeFrom(value).buildPartial();
        } else {
          address_ = value;
        }
        onChanged();
      } else {
        if (addressCase_ == 1) {
          tcpipAddressBuilder_.mergeFrom(value);
        }
        tcpipAddressBuilder_.setMessage(value);
      }
      addressCase_ = 1;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    public Builder clearTcpipAddress() {
      if (tcpipAddressBuilder_ == null) {
        if (addressCase_ == 1) {
          addressCase_ = 0;
          address_ = null;
          onChanged();
        }
      } else {
        if (addressCase_ == 1) {
          addressCase_ = 0;
          address_ = null;
        }
        tcpipAddressBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    public io.grpc.channelz.v1.Address.TcpIpAddress.Builder getTcpipAddressBuilder() {
      return getTcpipAddressFieldBuilder().getBuilder();
    }
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    public io.grpc.channelz.v1.Address.TcpIpAddressOrBuilder getTcpipAddressOrBuilder() {
      if ((addressCase_ == 1) && (tcpipAddressBuilder_ != null)) {
        return tcpipAddressBuilder_.getMessageOrBuilder();
      } else {
        if (addressCase_ == 1) {
          return (io.grpc.channelz.v1.Address.TcpIpAddress) address_;
        }
        return io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance();
      }
    }
    /**
     * <code>.grpc.channelz.v1.Address.TcpIpAddress tcpip_address = 1;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grpc.channelz.v1.Address.TcpIpAddress, io.grpc.channelz.v1.Address.TcpIpAddress.Builder, io.grpc.channelz.v1.Address.TcpIpAddressOrBuilder> 
        getTcpipAddressFieldBuilder() {
      if (tcpipAddressBuilder_ == null) {
        if (!(addressCase_ == 1)) {
          address_ = io.grpc.channelz.v1.Address.TcpIpAddress.getDefaultInstance();
        }
        tcpipAddressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            io.grpc.channelz.v1.Address.TcpIpAddress, io.grpc.channelz.v1.Address.TcpIpAddress.Builder, io.grpc.channelz.v1.Address.TcpIpAddressOrBuilder>(
                (io.grpc.channelz.v1.Address.TcpIpAddress) address_,
                getParentForChildren(),
                isClean());
        address_ = null;
      }
      addressCase_ = 1;
      onChanged();;
      return tcpipAddressBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        io.grpc.channelz.v1.Address.UdsAddress, io.grpc.channelz.v1.Address.UdsAddress.Builder, io.grpc.channelz.v1.Address.UdsAddressOrBuilder> udsAddressBuilder_;
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    public boolean hasUdsAddress() {
      return addressCase_ == 2;
    }
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    public io.grpc.channelz.v1.Address.UdsAddress getUdsAddress() {
      if (udsAddressBuilder_ == null) {
        if (addressCase_ == 2) {
          return (io.grpc.channelz.v1.Address.UdsAddress) address_;
        }
        return io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance();
      } else {
        if (addressCase_ == 2) {
          return udsAddressBuilder_.getMessage();
        }
        return io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance();
      }
    }
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    public Builder setUdsAddress(io.grpc.channelz.v1.Address.UdsAddress value) {
      if (udsAddressBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        address_ = value;
        onChanged();
      } else {
        udsAddressBuilder_.setMessage(value);
      }
      addressCase_ = 2;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    public Builder setUdsAddress(
        io.grpc.channelz.v1.Address.UdsAddress.Builder builderForValue) {
      if (udsAddressBuilder_ == null) {
        address_ = builderForValue.build();
        onChanged();
      } else {
        udsAddressBuilder_.setMessage(builderForValue.build());
      }
      addressCase_ = 2;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    public Builder mergeUdsAddress(io.grpc.channelz.v1.Address.UdsAddress value) {
      if (udsAddressBuilder_ == null) {
        if (addressCase_ == 2 &&
            address_ != io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance()) {
          address_ = io.grpc.channelz.v1.Address.UdsAddress.newBuilder((io.grpc.channelz.v1.Address.UdsAddress) address_)
              .mergeFrom(value).buildPartial();
        } else {
          address_ = value;
        }
        onChanged();
      } else {
        if (addressCase_ == 2) {
          udsAddressBuilder_.mergeFrom(value);
        }
        udsAddressBuilder_.setMessage(value);
      }
      addressCase_ = 2;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    public Builder clearUdsAddress() {
      if (udsAddressBuilder_ == null) {
        if (addressCase_ == 2) {
          addressCase_ = 0;
          address_ = null;
          onChanged();
        }
      } else {
        if (addressCase_ == 2) {
          addressCase_ = 0;
          address_ = null;
        }
        udsAddressBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    public io.grpc.channelz.v1.Address.UdsAddress.Builder getUdsAddressBuilder() {
      return getUdsAddressFieldBuilder().getBuilder();
    }
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    public io.grpc.channelz.v1.Address.UdsAddressOrBuilder getUdsAddressOrBuilder() {
      if ((addressCase_ == 2) && (udsAddressBuilder_ != null)) {
        return udsAddressBuilder_.getMessageOrBuilder();
      } else {
        if (addressCase_ == 2) {
          return (io.grpc.channelz.v1.Address.UdsAddress) address_;
        }
        return io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance();
      }
    }
    /**
     * <code>.grpc.channelz.v1.Address.UdsAddress uds_address = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grpc.channelz.v1.Address.UdsAddress, io.grpc.channelz.v1.Address.UdsAddress.Builder, io.grpc.channelz.v1.Address.UdsAddressOrBuilder> 
        getUdsAddressFieldBuilder() {
      if (udsAddressBuilder_ == null) {
        if (!(addressCase_ == 2)) {
          address_ = io.grpc.channelz.v1.Address.UdsAddress.getDefaultInstance();
        }
        udsAddressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            io.grpc.channelz.v1.Address.UdsAddress, io.grpc.channelz.v1.Address.UdsAddress.Builder, io.grpc.channelz.v1.Address.UdsAddressOrBuilder>(
                (io.grpc.channelz.v1.Address.UdsAddress) address_,
                getParentForChildren(),
                isClean());
        address_ = null;
      }
      addressCase_ = 2;
      onChanged();;
      return udsAddressBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        io.grpc.channelz.v1.Address.OtherAddress, io.grpc.channelz.v1.Address.OtherAddress.Builder, io.grpc.channelz.v1.Address.OtherAddressOrBuilder> otherAddressBuilder_;
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    public boolean hasOtherAddress() {
      return addressCase_ == 3;
    }
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    public io.grpc.channelz.v1.Address.OtherAddress getOtherAddress() {
      if (otherAddressBuilder_ == null) {
        if (addressCase_ == 3) {
          return (io.grpc.channelz.v1.Address.OtherAddress) address_;
        }
        return io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance();
      } else {
        if (addressCase_ == 3) {
          return otherAddressBuilder_.getMessage();
        }
        return io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance();
      }
    }
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    public Builder setOtherAddress(io.grpc.channelz.v1.Address.OtherAddress value) {
      if (otherAddressBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        address_ = value;
        onChanged();
      } else {
        otherAddressBuilder_.setMessage(value);
      }
      addressCase_ = 3;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    public Builder setOtherAddress(
        io.grpc.channelz.v1.Address.OtherAddress.Builder builderForValue) {
      if (otherAddressBuilder_ == null) {
        address_ = builderForValue.build();
        onChanged();
      } else {
        otherAddressBuilder_.setMessage(builderForValue.build());
      }
      addressCase_ = 3;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    public Builder mergeOtherAddress(io.grpc.channelz.v1.Address.OtherAddress value) {
      if (otherAddressBuilder_ == null) {
        if (addressCase_ == 3 &&
            address_ != io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance()) {
          address_ = io.grpc.channelz.v1.Address.OtherAddress.newBuilder((io.grpc.channelz.v1.Address.OtherAddress) address_)
              .mergeFrom(value).buildPartial();
        } else {
          address_ = value;
        }
        onChanged();
      } else {
        if (addressCase_ == 3) {
          otherAddressBuilder_.mergeFrom(value);
        }
        otherAddressBuilder_.setMessage(value);
      }
      addressCase_ = 3;
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    public Builder clearOtherAddress() {
      if (otherAddressBuilder_ == null) {
        if (addressCase_ == 3) {
          addressCase_ = 0;
          address_ = null;
          onChanged();
        }
      } else {
        if (addressCase_ == 3) {
          addressCase_ = 0;
          address_ = null;
        }
        otherAddressBuilder_.clear();
      }
      return this;
    }
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    public io.grpc.channelz.v1.Address.OtherAddress.Builder getOtherAddressBuilder() {
      return getOtherAddressFieldBuilder().getBuilder();
    }
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    public io.grpc.channelz.v1.Address.OtherAddressOrBuilder getOtherAddressOrBuilder() {
      if ((addressCase_ == 3) && (otherAddressBuilder_ != null)) {
        return otherAddressBuilder_.getMessageOrBuilder();
      } else {
        if (addressCase_ == 3) {
          return (io.grpc.channelz.v1.Address.OtherAddress) address_;
        }
        return io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance();
      }
    }
    /**
     * <code>.grpc.channelz.v1.Address.OtherAddress other_address = 3;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        io.grpc.channelz.v1.Address.OtherAddress, io.grpc.channelz.v1.Address.OtherAddress.Builder, io.grpc.channelz.v1.Address.OtherAddressOrBuilder> 
        getOtherAddressFieldBuilder() {
      if (otherAddressBuilder_ == null) {
        if (!(addressCase_ == 3)) {
          address_ = io.grpc.channelz.v1.Address.OtherAddress.getDefaultInstance();
        }
        otherAddressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            io.grpc.channelz.v1.Address.OtherAddress, io.grpc.channelz.v1.Address.OtherAddress.Builder, io.grpc.channelz.v1.Address.OtherAddressOrBuilder>(
                (io.grpc.channelz.v1.Address.OtherAddress) address_,
                getParentForChildren(),
                isClean());
        address_ = null;
      }
      addressCase_ = 3;
      onChanged();;
      return otherAddressBuilder_;
    }
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFieldsProto3(unknownFields);
    }

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


    // @@protoc_insertion_point(builder_scope:grpc.channelz.v1.Address)
  }

  // @@protoc_insertion_point(class_scope:grpc.channelz.v1.Address)
  private static final io.grpc.channelz.v1.Address DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new io.grpc.channelz.v1.Address();
  }

  public static io.grpc.channelz.v1.Address getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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

  public io.grpc.channelz.v1.Address getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

