alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Akka/Scala example source code file (ClusterMessages.java)

This example Akka source code file (ClusterMessages.java) is included in my "Source Code Warehouse" project. The intent of this project is to help you more easily find Akka and Scala source code examples by using tags.

All credit for the original source code belongs to akka.io; I'm just trying to make examples easier to find. (For my Scala work, see my Scala examples and tutorials.)

Akka tags/keywords

address, akka, buffer, builder, cluster, gossip, message, nodemetrics, nullpointerexception, number, observerreachability, parser, subjectreachability, version

The ClusterMessages.java Akka example source code

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

package akka.cluster.protobuf.msg;

public final class ClusterMessages {
  private ClusterMessages() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code ReachabilityStatus}
   *
   * <pre>
   **
   * Reachability status
   * </pre>
   */
  public enum ReachabilityStatus
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>Reachable = 0;</code>
     */
    Reachable(0, 0),
    /**
     * <code>Unreachable = 1;</code>
     */
    Unreachable(1, 1),
    /**
     * <code>Terminated = 2;</code>
     */
    Terminated(2, 2),
    ;

    /**
     * <code>Reachable = 0;</code>
     */
    public static final int Reachable_VALUE = 0;
    /**
     * <code>Unreachable = 1;</code>
     */
    public static final int Unreachable_VALUE = 1;
    /**
     * <code>Terminated = 2;</code>
     */
    public static final int Terminated_VALUE = 2;


    public final int getNumber() { return value; }

    public static ReachabilityStatus valueOf(int value) {
      switch (value) {
        case 0: return Reachable;
        case 1: return Unreachable;
        case 2: return Terminated;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int index;
    private final int value;

    private ReachabilityStatus(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:ReachabilityStatus)
  }

  /**
   * Protobuf enum {@code MemberStatus}
   *
   * <pre>
   **
   * Member Status
   * </pre>
   */
  public enum MemberStatus
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>Joining = 0;</code>
     */
    Joining(0, 0),
    /**
     * <code>Up = 1;</code>
     */
    Up(1, 1),
    /**
     * <code>Leaving = 2;</code>
     */
    Leaving(2, 2),
    /**
     * <code>Exiting = 3;</code>
     */
    Exiting(3, 3),
    /**
     * <code>Down = 4;</code>
     */
    Down(4, 4),
    /**
     * <code>Removed = 5;</code>
     */
    Removed(5, 5),
    ;

    /**
     * <code>Joining = 0;</code>
     */
    public static final int Joining_VALUE = 0;
    /**
     * <code>Up = 1;</code>
     */
    public static final int Up_VALUE = 1;
    /**
     * <code>Leaving = 2;</code>
     */
    public static final int Leaving_VALUE = 2;
    /**
     * <code>Exiting = 3;</code>
     */
    public static final int Exiting_VALUE = 3;
    /**
     * <code>Down = 4;</code>
     */
    public static final int Down_VALUE = 4;
    /**
     * <code>Removed = 5;</code>
     */
    public static final int Removed_VALUE = 5;


    public final int getNumber() { return value; }

    public static MemberStatus valueOf(int value) {
      switch (value) {
        case 0: return Joining;
        case 1: return Up;
        case 2: return Leaving;
        case 3: return Exiting;
        case 4: return Down;
        case 5: return Removed;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.getDescriptor().getEnumTypes().get(1);
    }

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

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

    private final int index;
    private final int value;

    private MemberStatus(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:MemberStatus)
  }

  public interface JoinOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .UniqueAddress node = 1;
    /**
     * <code>required .UniqueAddress node = 1;</code>
     */
    boolean hasNode();
    /**
     * <code>required .UniqueAddress node = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getNode();
    /**
     * <code>required .UniqueAddress node = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getNodeOrBuilder();

    // repeated string roles = 2;
    /**
     * <code>repeated string roles = 2;</code>
     */
    java.util.List<java.lang.String>
    getRolesList();
    /**
     * <code>repeated string roles = 2;</code>
     */
    int getRolesCount();
    /**
     * <code>repeated string roles = 2;</code>
     */
    java.lang.String getRoles(int index);
    /**
     * <code>repeated string roles = 2;</code>
     */
    com.google.protobuf.ByteString
        getRolesBytes(int index);
  }
  /**
   * Protobuf type {@code Join}
   *
   * <pre>
   **
   * Join
   * </pre>
   */
  public static final class Join extends
      com.google.protobuf.GeneratedMessage
      implements JoinOrBuilder {
    // Use Join.newBuilder() to construct.
    private Join(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Join(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Join defaultInstance;
    public static Join getDefaultInstance() {
      return defaultInstance;
    }

    public Join getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Join(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = node_.toBuilder();
              }
              node_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(node_);
                node_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                roles_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              roles_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          roles_ = new com.google.protobuf.UnmodifiableLazyStringList(roles_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Join_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Join_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.Join.class, akka.cluster.protobuf.msg.ClusterMessages.Join.Builder.class);
    }

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

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

    private int bitField0_;
    // required .UniqueAddress node = 1;
    public static final int NODE_FIELD_NUMBER = 1;
    private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress node_;
    /**
     * <code>required .UniqueAddress node = 1;</code>
     */
    public boolean hasNode() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .UniqueAddress node = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getNode() {
      return node_;
    }
    /**
     * <code>required .UniqueAddress node = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getNodeOrBuilder() {
      return node_;
    }

    // repeated string roles = 2;
    public static final int ROLES_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList roles_;
    /**
     * <code>repeated string roles = 2;</code>
     */
    public java.util.List<java.lang.String>
        getRolesList() {
      return roles_;
    }
    /**
     * <code>repeated string roles = 2;</code>
     */
    public int getRolesCount() {
      return roles_.size();
    }
    /**
     * <code>repeated string roles = 2;</code>
     */
    public java.lang.String getRoles(int index) {
      return roles_.get(index);
    }
    /**
     * <code>repeated string roles = 2;</code>
     */
    public com.google.protobuf.ByteString
        getRolesBytes(int index) {
      return roles_.getByteString(index);
    }

    private void initFields() {
      node_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasNode()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getNode().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, node_);
      }
      for (int i = 0; i < roles_.size(); i++) {
        output.writeBytes(2, roles_.getByteString(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, node_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < roles_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(roles_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getRolesList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Join parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.Join prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Join}
     *
     * <pre>
     **
     * Join
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.JoinOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Join_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Join_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.Join.class, akka.cluster.protobuf.msg.ClusterMessages.Join.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.Join.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getNodeFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (nodeBuilder_ == null) {
          node_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
        } else {
          nodeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Join_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Join getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.Join.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Join build() {
        akka.cluster.protobuf.msg.ClusterMessages.Join result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Join buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.Join result = new akka.cluster.protobuf.msg.ClusterMessages.Join(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (nodeBuilder_ == null) {
          result.node_ = node_;
        } else {
          result.node_ = nodeBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          roles_ = new com.google.protobuf.UnmodifiableLazyStringList(
              roles_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.roles_ = roles_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.Join) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.Join)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.Join other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.Join.getDefaultInstance()) return this;
        if (other.hasNode()) {
          mergeNode(other.getNode());
        }
        if (!other.roles_.isEmpty()) {
          if (roles_.isEmpty()) {
            roles_ = other.roles_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureRolesIsMutable();
            roles_.addAll(other.roles_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasNode()) {
          
          return false;
        }
        if (!getNode().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.Join parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.Join) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .UniqueAddress node = 1;
      private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress node_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> nodeBuilder_;
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      public boolean hasNode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getNode() {
        if (nodeBuilder_ == null) {
          return node_;
        } else {
          return nodeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      public Builder setNode(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (nodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          node_ = value;
          onChanged();
        } else {
          nodeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      public Builder setNode(
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder builderForValue) {
        if (nodeBuilder_ == null) {
          node_ = builderForValue.build();
          onChanged();
        } else {
          nodeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      public Builder mergeNode(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (nodeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              node_ != akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance()) {
            node_ =
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.newBuilder(node_).mergeFrom(value).buildPartial();
          } else {
            node_ = value;
          }
          onChanged();
        } else {
          nodeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      public Builder clearNode() {
        if (nodeBuilder_ == null) {
          node_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
          onChanged();
        } else {
          nodeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder getNodeBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getNodeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getNodeOrBuilder() {
        if (nodeBuilder_ != null) {
          return nodeBuilder_.getMessageOrBuilder();
        } else {
          return node_;
        }
      }
      /**
       * <code>required .UniqueAddress node = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
          getNodeFieldBuilder() {
        if (nodeBuilder_ == null) {
          nodeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder>(
                  node_,
                  getParentForChildren(),
                  isClean());
          node_ = null;
        }
        return nodeBuilder_;
      }

      // repeated string roles = 2;
      private com.google.protobuf.LazyStringList roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureRolesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          roles_ = new com.google.protobuf.LazyStringArrayList(roles_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public java.util.List<java.lang.String>
          getRolesList() {
        return java.util.Collections.unmodifiableList(roles_);
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public int getRolesCount() {
        return roles_.size();
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public java.lang.String getRoles(int index) {
        return roles_.get(index);
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public com.google.protobuf.ByteString
          getRolesBytes(int index) {
        return roles_.getByteString(index);
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public Builder setRoles(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRolesIsMutable();
        roles_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public Builder addRoles(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRolesIsMutable();
        roles_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public Builder addAllRoles(
          java.lang.Iterable<java.lang.String> values) {
        ensureRolesIsMutable();
        super.addAll(values, roles_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public Builder clearRoles() {
        roles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string roles = 2;</code>
       */
      public Builder addRolesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRolesIsMutable();
        roles_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Join)
    }

    static {
      defaultInstance = new Join(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Join)
  }

  public interface WelcomeOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .UniqueAddress from = 1;
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    boolean hasFrom();
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom();
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder();

    // required .Gossip gossip = 2;
    /**
     * <code>required .Gossip gossip = 2;</code>
     */
    boolean hasGossip();
    /**
     * <code>required .Gossip gossip = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.Gossip getGossip();
    /**
     * <code>required .Gossip gossip = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.GossipOrBuilder getGossipOrBuilder();
  }
  /**
   * Protobuf type {@code Welcome}
   *
   * <pre>
   **
   * Welcome, reply to Join
   * </pre>
   */
  public static final class Welcome extends
      com.google.protobuf.GeneratedMessage
      implements WelcomeOrBuilder {
    // Use Welcome.newBuilder() to construct.
    private Welcome(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Welcome(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Welcome defaultInstance;
    public static Welcome getDefaultInstance() {
      return defaultInstance;
    }

    public Welcome getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Welcome(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = from_.toBuilder();
              }
              from_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(from_);
                from_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              akka.cluster.protobuf.msg.ClusterMessages.Gossip.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = gossip_.toBuilder();
              }
              gossip_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.Gossip.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(gossip_);
                gossip_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Welcome_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Welcome_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.Welcome.class, akka.cluster.protobuf.msg.ClusterMessages.Welcome.Builder.class);
    }

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

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

    private int bitField0_;
    // required .UniqueAddress from = 1;
    public static final int FROM_FIELD_NUMBER = 1;
    private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress from_;
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom() {
      return from_;
    }
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder() {
      return from_;
    }

    // required .Gossip gossip = 2;
    public static final int GOSSIP_FIELD_NUMBER = 2;
    private akka.cluster.protobuf.msg.ClusterMessages.Gossip gossip_;
    /**
     * <code>required .Gossip gossip = 2;</code>
     */
    public boolean hasGossip() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .Gossip gossip = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.Gossip getGossip() {
      return gossip_;
    }
    /**
     * <code>required .Gossip gossip = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.GossipOrBuilder getGossipOrBuilder() {
      return gossip_;
    }

    private void initFields() {
      from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      gossip_ = akka.cluster.protobuf.msg.ClusterMessages.Gossip.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasFrom()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasGossip()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFrom().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getGossip().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, from_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, gossip_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, from_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, gossip_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Welcome parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.Welcome prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Welcome}
     *
     * <pre>
     **
     * Welcome, reply to Join
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.WelcomeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Welcome_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Welcome_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.Welcome.class, akka.cluster.protobuf.msg.ClusterMessages.Welcome.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.Welcome.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFromFieldBuilder();
          getGossipFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (fromBuilder_ == null) {
          from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
        } else {
          fromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (gossipBuilder_ == null) {
          gossip_ = akka.cluster.protobuf.msg.ClusterMessages.Gossip.getDefaultInstance();
        } else {
          gossipBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Welcome_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Welcome getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.Welcome.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Welcome build() {
        akka.cluster.protobuf.msg.ClusterMessages.Welcome result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Welcome buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.Welcome result = new akka.cluster.protobuf.msg.ClusterMessages.Welcome(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (fromBuilder_ == null) {
          result.from_ = from_;
        } else {
          result.from_ = fromBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (gossipBuilder_ == null) {
          result.gossip_ = gossip_;
        } else {
          result.gossip_ = gossipBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.Welcome) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.Welcome)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.Welcome other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.Welcome.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          mergeFrom(other.getFrom());
        }
        if (other.hasGossip()) {
          mergeGossip(other.getGossip());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFrom()) {
          
          return false;
        }
        if (!hasGossip()) {
          
          return false;
        }
        if (!getFrom().isInitialized()) {
          
          return false;
        }
        if (!getGossip().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.Welcome parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.Welcome) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .UniqueAddress from = 1;
      private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> fromBuilder_;
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom() {
        if (fromBuilder_ == null) {
          return from_;
        } else {
          return fromBuilder_.getMessage();
        }
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder setFrom(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (fromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          from_ = value;
          onChanged();
        } else {
          fromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder setFrom(
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder builderForValue) {
        if (fromBuilder_ == null) {
          from_ = builderForValue.build();
          onChanged();
        } else {
          fromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (fromBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              from_ != akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance()) {
            from_ =
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.newBuilder(from_).mergeFrom(value).buildPartial();
          } else {
            from_ = value;
          }
          onChanged();
        } else {
          fromBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder clearFrom() {
        if (fromBuilder_ == null) {
          from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
          onChanged();
        } else {
          fromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder getFromBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFromFieldBuilder().getBuilder();
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder() {
        if (fromBuilder_ != null) {
          return fromBuilder_.getMessageOrBuilder();
        } else {
          return from_;
        }
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
          getFromFieldBuilder() {
        if (fromBuilder_ == null) {
          fromBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder>(
                  from_,
                  getParentForChildren(),
                  isClean());
          from_ = null;
        }
        return fromBuilder_;
      }

      // required .Gossip gossip = 2;
      private akka.cluster.protobuf.msg.ClusterMessages.Gossip gossip_ = akka.cluster.protobuf.msg.ClusterMessages.Gossip.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Gossip, akka.cluster.protobuf.msg.ClusterMessages.Gossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.GossipOrBuilder> gossipBuilder_;
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      public boolean hasGossip() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Gossip getGossip() {
        if (gossipBuilder_ == null) {
          return gossip_;
        } else {
          return gossipBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      public Builder setGossip(akka.cluster.protobuf.msg.ClusterMessages.Gossip value) {
        if (gossipBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gossip_ = value;
          onChanged();
        } else {
          gossipBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      public Builder setGossip(
          akka.cluster.protobuf.msg.ClusterMessages.Gossip.Builder builderForValue) {
        if (gossipBuilder_ == null) {
          gossip_ = builderForValue.build();
          onChanged();
        } else {
          gossipBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      public Builder mergeGossip(akka.cluster.protobuf.msg.ClusterMessages.Gossip value) {
        if (gossipBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              gossip_ != akka.cluster.protobuf.msg.ClusterMessages.Gossip.getDefaultInstance()) {
            gossip_ =
              akka.cluster.protobuf.msg.ClusterMessages.Gossip.newBuilder(gossip_).mergeFrom(value).buildPartial();
          } else {
            gossip_ = value;
          }
          onChanged();
        } else {
          gossipBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      public Builder clearGossip() {
        if (gossipBuilder_ == null) {
          gossip_ = akka.cluster.protobuf.msg.ClusterMessages.Gossip.getDefaultInstance();
          onChanged();
        } else {
          gossipBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Gossip.Builder getGossipBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getGossipFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.GossipOrBuilder getGossipOrBuilder() {
        if (gossipBuilder_ != null) {
          return gossipBuilder_.getMessageOrBuilder();
        } else {
          return gossip_;
        }
      }
      /**
       * <code>required .Gossip gossip = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Gossip, akka.cluster.protobuf.msg.ClusterMessages.Gossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.GossipOrBuilder> 
          getGossipFieldBuilder() {
        if (gossipBuilder_ == null) {
          gossipBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.Gossip, akka.cluster.protobuf.msg.ClusterMessages.Gossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.GossipOrBuilder>(
                  gossip_,
                  getParentForChildren(),
                  isClean());
          gossip_ = null;
        }
        return gossipBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:Welcome)
    }

    static {
      defaultInstance = new Welcome(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Welcome)
  }

  public interface GossipEnvelopeOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .UniqueAddress from = 1;
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    boolean hasFrom();
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom();
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder();

    // required .UniqueAddress to = 2;
    /**
     * <code>required .UniqueAddress to = 2;</code>
     */
    boolean hasTo();
    /**
     * <code>required .UniqueAddress to = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getTo();
    /**
     * <code>required .UniqueAddress to = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getToOrBuilder();

    // required bytes serializedGossip = 3;
    /**
     * <code>required bytes serializedGossip = 3;</code>
     */
    boolean hasSerializedGossip();
    /**
     * <code>required bytes serializedGossip = 3;</code>
     */
    com.google.protobuf.ByteString getSerializedGossip();
  }
  /**
   * Protobuf type {@code GossipEnvelope}
   *
   * <pre>
   **
   * Gossip Envelope
   * </pre>
   */
  public static final class GossipEnvelope extends
      com.google.protobuf.GeneratedMessage
      implements GossipEnvelopeOrBuilder {
    // Use GossipEnvelope.newBuilder() to construct.
    private GossipEnvelope(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GossipEnvelope(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GossipEnvelope defaultInstance;
    public static GossipEnvelope getDefaultInstance() {
      return defaultInstance;
    }

    public GossipEnvelope getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GossipEnvelope(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = from_.toBuilder();
              }
              from_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(from_);
                from_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = to_.toBuilder();
              }
              to_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(to_);
                to_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              serializedGossip_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipEnvelope_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipEnvelope_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope.class, akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope.Builder.class);
    }

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

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

    private int bitField0_;
    // required .UniqueAddress from = 1;
    public static final int FROM_FIELD_NUMBER = 1;
    private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress from_;
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom() {
      return from_;
    }
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder() {
      return from_;
    }

    // required .UniqueAddress to = 2;
    public static final int TO_FIELD_NUMBER = 2;
    private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress to_;
    /**
     * <code>required .UniqueAddress to = 2;</code>
     */
    public boolean hasTo() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .UniqueAddress to = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getTo() {
      return to_;
    }
    /**
     * <code>required .UniqueAddress to = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getToOrBuilder() {
      return to_;
    }

    // required bytes serializedGossip = 3;
    public static final int SERIALIZEDGOSSIP_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString serializedGossip_;
    /**
     * <code>required bytes serializedGossip = 3;</code>
     */
    public boolean hasSerializedGossip() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required bytes serializedGossip = 3;</code>
     */
    public com.google.protobuf.ByteString getSerializedGossip() {
      return serializedGossip_;
    }

    private void initFields() {
      from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      to_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      serializedGossip_ = com.google.protobuf.ByteString.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasFrom()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTo()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSerializedGossip()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFrom().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTo().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, from_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, to_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, serializedGossip_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, from_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, to_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, serializedGossip_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GossipEnvelope}
     *
     * <pre>
     **
     * Gossip Envelope
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelopeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipEnvelope_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipEnvelope_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope.class, akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFromFieldBuilder();
          getToFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (fromBuilder_ == null) {
          from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
        } else {
          fromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (toBuilder_ == null) {
          to_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
        } else {
          toBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        serializedGossip_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipEnvelope_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope build() {
        akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope result = new akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (fromBuilder_ == null) {
          result.from_ = from_;
        } else {
          result.from_ = fromBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (toBuilder_ == null) {
          result.to_ = to_;
        } else {
          result.to_ = toBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.serializedGossip_ = serializedGossip_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          mergeFrom(other.getFrom());
        }
        if (other.hasTo()) {
          mergeTo(other.getTo());
        }
        if (other.hasSerializedGossip()) {
          setSerializedGossip(other.getSerializedGossip());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFrom()) {
          
          return false;
        }
        if (!hasTo()) {
          
          return false;
        }
        if (!hasSerializedGossip()) {
          
          return false;
        }
        if (!getFrom().isInitialized()) {
          
          return false;
        }
        if (!getTo().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.GossipEnvelope) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .UniqueAddress from = 1;
      private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> fromBuilder_;
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom() {
        if (fromBuilder_ == null) {
          return from_;
        } else {
          return fromBuilder_.getMessage();
        }
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder setFrom(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (fromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          from_ = value;
          onChanged();
        } else {
          fromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder setFrom(
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder builderForValue) {
        if (fromBuilder_ == null) {
          from_ = builderForValue.build();
          onChanged();
        } else {
          fromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (fromBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              from_ != akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance()) {
            from_ =
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.newBuilder(from_).mergeFrom(value).buildPartial();
          } else {
            from_ = value;
          }
          onChanged();
        } else {
          fromBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder clearFrom() {
        if (fromBuilder_ == null) {
          from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
          onChanged();
        } else {
          fromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder getFromBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFromFieldBuilder().getBuilder();
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder() {
        if (fromBuilder_ != null) {
          return fromBuilder_.getMessageOrBuilder();
        } else {
          return from_;
        }
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
          getFromFieldBuilder() {
        if (fromBuilder_ == null) {
          fromBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder>(
                  from_,
                  getParentForChildren(),
                  isClean());
          from_ = null;
        }
        return fromBuilder_;
      }

      // required .UniqueAddress to = 2;
      private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress to_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> toBuilder_;
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      public boolean hasTo() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getTo() {
        if (toBuilder_ == null) {
          return to_;
        } else {
          return toBuilder_.getMessage();
        }
      }
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      public Builder setTo(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (toBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          to_ = value;
          onChanged();
        } else {
          toBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      public Builder setTo(
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder builderForValue) {
        if (toBuilder_ == null) {
          to_ = builderForValue.build();
          onChanged();
        } else {
          toBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      public Builder mergeTo(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (toBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              to_ != akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance()) {
            to_ =
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.newBuilder(to_).mergeFrom(value).buildPartial();
          } else {
            to_ = value;
          }
          onChanged();
        } else {
          toBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      public Builder clearTo() {
        if (toBuilder_ == null) {
          to_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
          onChanged();
        } else {
          toBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder getToBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getToFieldBuilder().getBuilder();
      }
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getToOrBuilder() {
        if (toBuilder_ != null) {
          return toBuilder_.getMessageOrBuilder();
        } else {
          return to_;
        }
      }
      /**
       * <code>required .UniqueAddress to = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
          getToFieldBuilder() {
        if (toBuilder_ == null) {
          toBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder>(
                  to_,
                  getParentForChildren(),
                  isClean());
          to_ = null;
        }
        return toBuilder_;
      }

      // required bytes serializedGossip = 3;
      private com.google.protobuf.ByteString serializedGossip_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes serializedGossip = 3;</code>
       */
      public boolean hasSerializedGossip() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required bytes serializedGossip = 3;</code>
       */
      public com.google.protobuf.ByteString getSerializedGossip() {
        return serializedGossip_;
      }
      /**
       * <code>required bytes serializedGossip = 3;</code>
       */
      public Builder setSerializedGossip(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        serializedGossip_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes serializedGossip = 3;</code>
       */
      public Builder clearSerializedGossip() {
        bitField0_ = (bitField0_ & ~0x00000004);
        serializedGossip_ = getDefaultInstance().getSerializedGossip();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GossipEnvelope)
    }

    static {
      defaultInstance = new GossipEnvelope(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GossipEnvelope)
  }

  public interface GossipStatusOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .UniqueAddress from = 1;
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    boolean hasFrom();
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom();
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder();

    // repeated string allHashes = 2;
    /**
     * <code>repeated string allHashes = 2;</code>
     */
    java.util.List<java.lang.String>
    getAllHashesList();
    /**
     * <code>repeated string allHashes = 2;</code>
     */
    int getAllHashesCount();
    /**
     * <code>repeated string allHashes = 2;</code>
     */
    java.lang.String getAllHashes(int index);
    /**
     * <code>repeated string allHashes = 2;</code>
     */
    com.google.protobuf.ByteString
        getAllHashesBytes(int index);

    // required .VectorClock version = 3;
    /**
     * <code>required .VectorClock version = 3;</code>
     */
    boolean hasVersion();
    /**
     * <code>required .VectorClock version = 3;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.VectorClock getVersion();
    /**
     * <code>required .VectorClock version = 3;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder getVersionOrBuilder();
  }
  /**
   * Protobuf type {@code GossipStatus}
   *
   * <pre>
   **
   * Gossip Status
   * </pre>
   */
  public static final class GossipStatus extends
      com.google.protobuf.GeneratedMessage
      implements GossipStatusOrBuilder {
    // Use GossipStatus.newBuilder() to construct.
    private GossipStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GossipStatus(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GossipStatus defaultInstance;
    public static GossipStatus getDefaultInstance() {
      return defaultInstance;
    }

    public GossipStatus getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GossipStatus(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = from_.toBuilder();
              }
              from_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(from_);
                from_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                allHashes_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              allHashes_.add(input.readBytes());
              break;
            }
            case 26: {
              akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = version_.toBuilder();
              }
              version_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.VectorClock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(version_);
                version_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          allHashes_ = new com.google.protobuf.UnmodifiableLazyStringList(allHashes_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipStatus_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.GossipStatus.class, akka.cluster.protobuf.msg.ClusterMessages.GossipStatus.Builder.class);
    }

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

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

    private int bitField0_;
    // required .UniqueAddress from = 1;
    public static final int FROM_FIELD_NUMBER = 1;
    private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress from_;
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom() {
      return from_;
    }
    /**
     * <code>required .UniqueAddress from = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder() {
      return from_;
    }

    // repeated string allHashes = 2;
    public static final int ALLHASHES_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList allHashes_;
    /**
     * <code>repeated string allHashes = 2;</code>
     */
    public java.util.List<java.lang.String>
        getAllHashesList() {
      return allHashes_;
    }
    /**
     * <code>repeated string allHashes = 2;</code>
     */
    public int getAllHashesCount() {
      return allHashes_.size();
    }
    /**
     * <code>repeated string allHashes = 2;</code>
     */
    public java.lang.String getAllHashes(int index) {
      return allHashes_.get(index);
    }
    /**
     * <code>repeated string allHashes = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAllHashesBytes(int index) {
      return allHashes_.getByteString(index);
    }

    // required .VectorClock version = 3;
    public static final int VERSION_FIELD_NUMBER = 3;
    private akka.cluster.protobuf.msg.ClusterMessages.VectorClock version_;
    /**
     * <code>required .VectorClock version = 3;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .VectorClock version = 3;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.VectorClock getVersion() {
      return version_;
    }
    /**
     * <code>required .VectorClock version = 3;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder getVersionOrBuilder() {
      return version_;
    }

    private void initFields() {
      from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      allHashes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      version_ = akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasFrom()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFrom().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getVersion().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, from_);
      }
      for (int i = 0; i < allHashes_.size(); i++) {
        output.writeBytes(2, allHashes_.getByteString(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, version_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, from_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < allHashes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(allHashes_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getAllHashesList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, version_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.GossipStatus prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GossipStatus}
     *
     * <pre>
     **
     * Gossip Status
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.GossipStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipStatus_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.GossipStatus.class, akka.cluster.protobuf.msg.ClusterMessages.GossipStatus.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.GossipStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFromFieldBuilder();
          getVersionFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (fromBuilder_ == null) {
          from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
        } else {
          fromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        allHashes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (versionBuilder_ == null) {
          version_ = akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
        } else {
          versionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipStatus_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipStatus getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.GossipStatus.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipStatus build() {
        akka.cluster.protobuf.msg.ClusterMessages.GossipStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipStatus buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.GossipStatus result = new akka.cluster.protobuf.msg.ClusterMessages.GossipStatus(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (fromBuilder_ == null) {
          result.from_ = from_;
        } else {
          result.from_ = fromBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          allHashes_ = new com.google.protobuf.UnmodifiableLazyStringList(
              allHashes_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.allHashes_ = allHashes_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        if (versionBuilder_ == null) {
          result.version_ = version_;
        } else {
          result.version_ = versionBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.GossipStatus) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.GossipStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.GossipStatus other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.GossipStatus.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          mergeFrom(other.getFrom());
        }
        if (!other.allHashes_.isEmpty()) {
          if (allHashes_.isEmpty()) {
            allHashes_ = other.allHashes_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureAllHashesIsMutable();
            allHashes_.addAll(other.allHashes_);
          }
          onChanged();
        }
        if (other.hasVersion()) {
          mergeVersion(other.getVersion());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFrom()) {
          
          return false;
        }
        if (!hasVersion()) {
          
          return false;
        }
        if (!getFrom().isInitialized()) {
          
          return false;
        }
        if (!getVersion().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.GossipStatus parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.GossipStatus) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .UniqueAddress from = 1;
      private akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> fromBuilder_;
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getFrom() {
        if (fromBuilder_ == null) {
          return from_;
        } else {
          return fromBuilder_.getMessage();
        }
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder setFrom(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (fromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          from_ = value;
          onChanged();
        } else {
          fromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder setFrom(
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder builderForValue) {
        if (fromBuilder_ == null) {
          from_ = builderForValue.build();
          onChanged();
        } else {
          fromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (fromBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              from_ != akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance()) {
            from_ =
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.newBuilder(from_).mergeFrom(value).buildPartial();
          } else {
            from_ = value;
          }
          onChanged();
        } else {
          fromBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public Builder clearFrom() {
        if (fromBuilder_ == null) {
          from_ = akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
          onChanged();
        } else {
          fromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder getFromBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFromFieldBuilder().getBuilder();
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getFromOrBuilder() {
        if (fromBuilder_ != null) {
          return fromBuilder_.getMessageOrBuilder();
        } else {
          return from_;
        }
      }
      /**
       * <code>required .UniqueAddress from = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
          getFromFieldBuilder() {
        if (fromBuilder_ == null) {
          fromBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder>(
                  from_,
                  getParentForChildren(),
                  isClean());
          from_ = null;
        }
        return fromBuilder_;
      }

      // repeated string allHashes = 2;
      private com.google.protobuf.LazyStringList allHashes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAllHashesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          allHashes_ = new com.google.protobuf.LazyStringArrayList(allHashes_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public java.util.List<java.lang.String>
          getAllHashesList() {
        return java.util.Collections.unmodifiableList(allHashes_);
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public int getAllHashesCount() {
        return allHashes_.size();
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public java.lang.String getAllHashes(int index) {
        return allHashes_.get(index);
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAllHashesBytes(int index) {
        return allHashes_.getByteString(index);
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public Builder setAllHashes(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllHashesIsMutable();
        allHashes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public Builder addAllHashes(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllHashesIsMutable();
        allHashes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public Builder addAllAllHashes(
          java.lang.Iterable<java.lang.String> values) {
        ensureAllHashesIsMutable();
        super.addAll(values, allHashes_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public Builder clearAllHashes() {
        allHashes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allHashes = 2;</code>
       */
      public Builder addAllHashesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllHashesIsMutable();
        allHashes_.add(value);
        onChanged();
        return this;
      }

      // required .VectorClock version = 3;
      private akka.cluster.protobuf.msg.ClusterMessages.VectorClock version_ = akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder> versionBuilder_;
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock getVersion() {
        if (versionBuilder_ == null) {
          return version_;
        } else {
          return versionBuilder_.getMessage();
        }
      }
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      public Builder setVersion(akka.cluster.protobuf.msg.ClusterMessages.VectorClock value) {
        if (versionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          version_ = value;
          onChanged();
        } else {
          versionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      public Builder setVersion(
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder builderForValue) {
        if (versionBuilder_ == null) {
          version_ = builderForValue.build();
          onChanged();
        } else {
          versionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      public Builder mergeVersion(akka.cluster.protobuf.msg.ClusterMessages.VectorClock value) {
        if (versionBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              version_ != akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance()) {
            version_ =
              akka.cluster.protobuf.msg.ClusterMessages.VectorClock.newBuilder(version_).mergeFrom(value).buildPartial();
          } else {
            version_ = value;
          }
          onChanged();
        } else {
          versionBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      public Builder clearVersion() {
        if (versionBuilder_ == null) {
          version_ = akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
          onChanged();
        } else {
          versionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder getVersionBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getVersionFieldBuilder().getBuilder();
      }
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder getVersionOrBuilder() {
        if (versionBuilder_ != null) {
          return versionBuilder_.getMessageOrBuilder();
        } else {
          return version_;
        }
      }
      /**
       * <code>required .VectorClock version = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder> 
          getVersionFieldBuilder() {
        if (versionBuilder_ == null) {
          versionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.VectorClock, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder>(
                  version_,
                  getParentForChildren(),
                  isClean());
          version_ = null;
        }
        return versionBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GossipStatus)
    }

    static {
      defaultInstance = new GossipStatus(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GossipStatus)
  }

  public interface GossipOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .UniqueAddress allAddresses = 1;
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    java.util.List<akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress> 
        getAllAddressesList();
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getAllAddresses(int index);
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    int getAllAddressesCount();
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
        getAllAddressesOrBuilderList();
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getAllAddressesOrBuilder(
        int index);

    // repeated string allRoles = 2;
    /**
     * <code>repeated string allRoles = 2;</code>
     */
    java.util.List<java.lang.String>
    getAllRolesList();
    /**
     * <code>repeated string allRoles = 2;</code>
     */
    int getAllRolesCount();
    /**
     * <code>repeated string allRoles = 2;</code>
     */
    java.lang.String getAllRoles(int index);
    /**
     * <code>repeated string allRoles = 2;</code>
     */
    com.google.protobuf.ByteString
        getAllRolesBytes(int index);

    // repeated string allHashes = 3;
    /**
     * <code>repeated string allHashes = 3;</code>
     */
    java.util.List<java.lang.String>
    getAllHashesList();
    /**
     * <code>repeated string allHashes = 3;</code>
     */
    int getAllHashesCount();
    /**
     * <code>repeated string allHashes = 3;</code>
     */
    java.lang.String getAllHashes(int index);
    /**
     * <code>repeated string allHashes = 3;</code>
     */
    com.google.protobuf.ByteString
        getAllHashesBytes(int index);

    // repeated .Member members = 4;
    /**
     * <code>repeated .Member members = 4;</code>
     */
    java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Member> 
        getMembersList();
    /**
     * <code>repeated .Member members = 4;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.Member getMembers(int index);
    /**
     * <code>repeated .Member members = 4;</code>
     */
    int getMembersCount();
    /**
     * <code>repeated .Member members = 4;</code>
     */
    java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder> 
        getMembersOrBuilderList();
    /**
     * <code>repeated .Member members = 4;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder getMembersOrBuilder(
        int index);

    // required .GossipOverview overview = 5;
    /**
     * <code>required .GossipOverview overview = 5;</code>
     */
    boolean hasOverview();
    /**
     * <code>required .GossipOverview overview = 5;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.GossipOverview getOverview();
    /**
     * <code>required .GossipOverview overview = 5;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.GossipOverviewOrBuilder getOverviewOrBuilder();

    // required .VectorClock version = 6;
    /**
     * <code>required .VectorClock version = 6;</code>
     */
    boolean hasVersion();
    /**
     * <code>required .VectorClock version = 6;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.VectorClock getVersion();
    /**
     * <code>required .VectorClock version = 6;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder getVersionOrBuilder();
  }
  /**
   * Protobuf type {@code Gossip}
   *
   * <pre>
   **
   * Gossip
   * </pre>
   */
  public static final class Gossip extends
      com.google.protobuf.GeneratedMessage
      implements GossipOrBuilder {
    // Use Gossip.newBuilder() to construct.
    private Gossip(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Gossip(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Gossip defaultInstance;
    public static Gossip getDefaultInstance() {
      return defaultInstance;
    }

    public Gossip getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Gossip(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                allAddresses_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress>();
                mutable_bitField0_ |= 0x00000001;
              }
              allAddresses_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                allRoles_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              allRoles_.add(input.readBytes());
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                allHashes_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              allHashes_.add(input.readBytes());
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                members_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.Member>();
                mutable_bitField0_ |= 0x00000008;
              }
              members_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.Member.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = overview_.toBuilder();
              }
              overview_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(overview_);
                overview_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 50: {
              akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = version_.toBuilder();
              }
              version_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.VectorClock.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(version_);
                version_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          allAddresses_ = java.util.Collections.unmodifiableList(allAddresses_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          allRoles_ = new com.google.protobuf.UnmodifiableLazyStringList(allRoles_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          allHashes_ = new com.google.protobuf.UnmodifiableLazyStringList(allHashes_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          members_ = java.util.Collections.unmodifiableList(members_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Gossip_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Gossip_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.Gossip.class, akka.cluster.protobuf.msg.ClusterMessages.Gossip.Builder.class);
    }

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

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

    private int bitField0_;
    // repeated .UniqueAddress allAddresses = 1;
    public static final int ALLADDRESSES_FIELD_NUMBER = 1;
    private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress> allAddresses_;
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress> getAllAddressesList() {
      return allAddresses_;
    }
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
        getAllAddressesOrBuilderList() {
      return allAddresses_;
    }
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    public int getAllAddressesCount() {
      return allAddresses_.size();
    }
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getAllAddresses(int index) {
      return allAddresses_.get(index);
    }
    /**
     * <code>repeated .UniqueAddress allAddresses = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getAllAddressesOrBuilder(
        int index) {
      return allAddresses_.get(index);
    }

    // repeated string allRoles = 2;
    public static final int ALLROLES_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList allRoles_;
    /**
     * <code>repeated string allRoles = 2;</code>
     */
    public java.util.List<java.lang.String>
        getAllRolesList() {
      return allRoles_;
    }
    /**
     * <code>repeated string allRoles = 2;</code>
     */
    public int getAllRolesCount() {
      return allRoles_.size();
    }
    /**
     * <code>repeated string allRoles = 2;</code>
     */
    public java.lang.String getAllRoles(int index) {
      return allRoles_.get(index);
    }
    /**
     * <code>repeated string allRoles = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAllRolesBytes(int index) {
      return allRoles_.getByteString(index);
    }

    // repeated string allHashes = 3;
    public static final int ALLHASHES_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList allHashes_;
    /**
     * <code>repeated string allHashes = 3;</code>
     */
    public java.util.List<java.lang.String>
        getAllHashesList() {
      return allHashes_;
    }
    /**
     * <code>repeated string allHashes = 3;</code>
     */
    public int getAllHashesCount() {
      return allHashes_.size();
    }
    /**
     * <code>repeated string allHashes = 3;</code>
     */
    public java.lang.String getAllHashes(int index) {
      return allHashes_.get(index);
    }
    /**
     * <code>repeated string allHashes = 3;</code>
     */
    public com.google.protobuf.ByteString
        getAllHashesBytes(int index) {
      return allHashes_.getByteString(index);
    }

    // repeated .Member members = 4;
    public static final int MEMBERS_FIELD_NUMBER = 4;
    private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Member> members_;
    /**
     * <code>repeated .Member members = 4;</code>
     */
    public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Member> getMembersList() {
      return members_;
    }
    /**
     * <code>repeated .Member members = 4;</code>
     */
    public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder> 
        getMembersOrBuilderList() {
      return members_;
    }
    /**
     * <code>repeated .Member members = 4;</code>
     */
    public int getMembersCount() {
      return members_.size();
    }
    /**
     * <code>repeated .Member members = 4;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.Member getMembers(int index) {
      return members_.get(index);
    }
    /**
     * <code>repeated .Member members = 4;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder getMembersOrBuilder(
        int index) {
      return members_.get(index);
    }

    // required .GossipOverview overview = 5;
    public static final int OVERVIEW_FIELD_NUMBER = 5;
    private akka.cluster.protobuf.msg.ClusterMessages.GossipOverview overview_;
    /**
     * <code>required .GossipOverview overview = 5;</code>
     */
    public boolean hasOverview() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .GossipOverview overview = 5;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.GossipOverview getOverview() {
      return overview_;
    }
    /**
     * <code>required .GossipOverview overview = 5;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.GossipOverviewOrBuilder getOverviewOrBuilder() {
      return overview_;
    }

    // required .VectorClock version = 6;
    public static final int VERSION_FIELD_NUMBER = 6;
    private akka.cluster.protobuf.msg.ClusterMessages.VectorClock version_;
    /**
     * <code>required .VectorClock version = 6;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .VectorClock version = 6;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.VectorClock getVersion() {
      return version_;
    }
    /**
     * <code>required .VectorClock version = 6;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder getVersionOrBuilder() {
      return version_;
    }

    private void initFields() {
      allAddresses_ = java.util.Collections.emptyList();
      allRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      allHashes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      members_ = java.util.Collections.emptyList();
      overview_ = akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.getDefaultInstance();
      version_ = akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasOverview()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getAllAddressesCount(); i++) {
        if (!getAllAddresses(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getMembersCount(); i++) {
        if (!getMembers(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getOverview().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getVersion().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < allAddresses_.size(); i++) {
        output.writeMessage(1, allAddresses_.get(i));
      }
      for (int i = 0; i < allRoles_.size(); i++) {
        output.writeBytes(2, allRoles_.getByteString(i));
      }
      for (int i = 0; i < allHashes_.size(); i++) {
        output.writeBytes(3, allHashes_.getByteString(i));
      }
      for (int i = 0; i < members_.size(); i++) {
        output.writeMessage(4, members_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(5, overview_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(6, version_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < allAddresses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, allAddresses_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < allRoles_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(allRoles_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getAllRolesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < allHashes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(allHashes_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getAllHashesList().size();
      }
      for (int i = 0; i < members_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, members_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, overview_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, version_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Gossip parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.Gossip prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Gossip}
     *
     * <pre>
     **
     * Gossip
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.GossipOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Gossip_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Gossip_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.Gossip.class, akka.cluster.protobuf.msg.ClusterMessages.Gossip.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.Gossip.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAllAddressesFieldBuilder();
          getMembersFieldBuilder();
          getOverviewFieldBuilder();
          getVersionFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (allAddressesBuilder_ == null) {
          allAddresses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          allAddressesBuilder_.clear();
        }
        allRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        allHashes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (membersBuilder_ == null) {
          members_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          membersBuilder_.clear();
        }
        if (overviewBuilder_ == null) {
          overview_ = akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.getDefaultInstance();
        } else {
          overviewBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (versionBuilder_ == null) {
          version_ = akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
        } else {
          versionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Gossip_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Gossip getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.Gossip.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Gossip build() {
        akka.cluster.protobuf.msg.ClusterMessages.Gossip result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Gossip buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.Gossip result = new akka.cluster.protobuf.msg.ClusterMessages.Gossip(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (allAddressesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            allAddresses_ = java.util.Collections.unmodifiableList(allAddresses_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.allAddresses_ = allAddresses_;
        } else {
          result.allAddresses_ = allAddressesBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          allRoles_ = new com.google.protobuf.UnmodifiableLazyStringList(
              allRoles_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.allRoles_ = allRoles_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          allHashes_ = new com.google.protobuf.UnmodifiableLazyStringList(
              allHashes_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.allHashes_ = allHashes_;
        if (membersBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            members_ = java.util.Collections.unmodifiableList(members_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.members_ = members_;
        } else {
          result.members_ = membersBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000001;
        }
        if (overviewBuilder_ == null) {
          result.overview_ = overview_;
        } else {
          result.overview_ = overviewBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000002;
        }
        if (versionBuilder_ == null) {
          result.version_ = version_;
        } else {
          result.version_ = versionBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.Gossip) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.Gossip)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.Gossip other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.Gossip.getDefaultInstance()) return this;
        if (allAddressesBuilder_ == null) {
          if (!other.allAddresses_.isEmpty()) {
            if (allAddresses_.isEmpty()) {
              allAddresses_ = other.allAddresses_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAllAddressesIsMutable();
              allAddresses_.addAll(other.allAddresses_);
            }
            onChanged();
          }
        } else {
          if (!other.allAddresses_.isEmpty()) {
            if (allAddressesBuilder_.isEmpty()) {
              allAddressesBuilder_.dispose();
              allAddressesBuilder_ = null;
              allAddresses_ = other.allAddresses_;
              bitField0_ = (bitField0_ & ~0x00000001);
              allAddressesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAllAddressesFieldBuilder() : null;
            } else {
              allAddressesBuilder_.addAllMessages(other.allAddresses_);
            }
          }
        }
        if (!other.allRoles_.isEmpty()) {
          if (allRoles_.isEmpty()) {
            allRoles_ = other.allRoles_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureAllRolesIsMutable();
            allRoles_.addAll(other.allRoles_);
          }
          onChanged();
        }
        if (!other.allHashes_.isEmpty()) {
          if (allHashes_.isEmpty()) {
            allHashes_ = other.allHashes_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureAllHashesIsMutable();
            allHashes_.addAll(other.allHashes_);
          }
          onChanged();
        }
        if (membersBuilder_ == null) {
          if (!other.members_.isEmpty()) {
            if (members_.isEmpty()) {
              members_ = other.members_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureMembersIsMutable();
              members_.addAll(other.members_);
            }
            onChanged();
          }
        } else {
          if (!other.members_.isEmpty()) {
            if (membersBuilder_.isEmpty()) {
              membersBuilder_.dispose();
              membersBuilder_ = null;
              members_ = other.members_;
              bitField0_ = (bitField0_ & ~0x00000008);
              membersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMembersFieldBuilder() : null;
            } else {
              membersBuilder_.addAllMessages(other.members_);
            }
          }
        }
        if (other.hasOverview()) {
          mergeOverview(other.getOverview());
        }
        if (other.hasVersion()) {
          mergeVersion(other.getVersion());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasOverview()) {
          
          return false;
        }
        if (!hasVersion()) {
          
          return false;
        }
        for (int i = 0; i < getAllAddressesCount(); i++) {
          if (!getAllAddresses(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getMembersCount(); i++) {
          if (!getMembers(i).isInitialized()) {
            
            return false;
          }
        }
        if (!getOverview().isInitialized()) {
          
          return false;
        }
        if (!getVersion().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.Gossip parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.Gossip) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .UniqueAddress allAddresses = 1;
      private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress> allAddresses_ =
        java.util.Collections.emptyList();
      private void ensureAllAddressesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          allAddresses_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress>(allAddresses_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> allAddressesBuilder_;

      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress> getAllAddressesList() {
        if (allAddressesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(allAddresses_);
        } else {
          return allAddressesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public int getAllAddressesCount() {
        if (allAddressesBuilder_ == null) {
          return allAddresses_.size();
        } else {
          return allAddressesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getAllAddresses(int index) {
        if (allAddressesBuilder_ == null) {
          return allAddresses_.get(index);
        } else {
          return allAddressesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder setAllAddresses(
          int index, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (allAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAddressesIsMutable();
          allAddresses_.set(index, value);
          onChanged();
        } else {
          allAddressesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder setAllAddresses(
          int index, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder builderForValue) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          allAddresses_.set(index, builderForValue.build());
          onChanged();
        } else {
          allAddressesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder addAllAddresses(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (allAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAddressesIsMutable();
          allAddresses_.add(value);
          onChanged();
        } else {
          allAddressesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder addAllAddresses(
          int index, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress value) {
        if (allAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAddressesIsMutable();
          allAddresses_.add(index, value);
          onChanged();
        } else {
          allAddressesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder addAllAddresses(
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder builderForValue) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          allAddresses_.add(builderForValue.build());
          onChanged();
        } else {
          allAddressesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder addAllAddresses(
          int index, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder builderForValue) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          allAddresses_.add(index, builderForValue.build());
          onChanged();
        } else {
          allAddressesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder addAllAllAddresses(
          java.lang.Iterable<? extends akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress> values) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          super.addAll(values, allAddresses_);
          onChanged();
        } else {
          allAddressesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder clearAllAddresses() {
        if (allAddressesBuilder_ == null) {
          allAddresses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          allAddressesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public Builder removeAllAddresses(int index) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          allAddresses_.remove(index);
          onChanged();
        } else {
          allAddressesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder getAllAddressesBuilder(
          int index) {
        return getAllAddressesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder getAllAddressesOrBuilder(
          int index) {
        if (allAddressesBuilder_ == null) {
          return allAddresses_.get(index);  } else {
          return allAddressesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
           getAllAddressesOrBuilderList() {
        if (allAddressesBuilder_ != null) {
          return allAddressesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(allAddresses_);
        }
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder addAllAddressesBuilder() {
        return getAllAddressesFieldBuilder().addBuilder(
            akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance());
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder addAllAddressesBuilder(
          int index) {
        return getAllAddressesFieldBuilder().addBuilder(
            index, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance());
      }
      /**
       * <code>repeated .UniqueAddress allAddresses = 1;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder> 
           getAllAddressesBuilderList() {
        return getAllAddressesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder> 
          getAllAddressesFieldBuilder() {
        if (allAddressesBuilder_ == null) {
          allAddressesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder>(
                  allAddresses_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          allAddresses_ = null;
        }
        return allAddressesBuilder_;
      }

      // repeated string allRoles = 2;
      private com.google.protobuf.LazyStringList allRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAllRolesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          allRoles_ = new com.google.protobuf.LazyStringArrayList(allRoles_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public java.util.List<java.lang.String>
          getAllRolesList() {
        return java.util.Collections.unmodifiableList(allRoles_);
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public int getAllRolesCount() {
        return allRoles_.size();
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public java.lang.String getAllRoles(int index) {
        return allRoles_.get(index);
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAllRolesBytes(int index) {
        return allRoles_.getByteString(index);
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public Builder setAllRoles(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllRolesIsMutable();
        allRoles_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public Builder addAllRoles(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllRolesIsMutable();
        allRoles_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public Builder addAllAllRoles(
          java.lang.Iterable<java.lang.String> values) {
        ensureAllRolesIsMutable();
        super.addAll(values, allRoles_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public Builder clearAllRoles() {
        allRoles_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allRoles = 2;</code>
       */
      public Builder addAllRolesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllRolesIsMutable();
        allRoles_.add(value);
        onChanged();
        return this;
      }

      // repeated string allHashes = 3;
      private com.google.protobuf.LazyStringList allHashes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAllHashesIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          allHashes_ = new com.google.protobuf.LazyStringArrayList(allHashes_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public java.util.List<java.lang.String>
          getAllHashesList() {
        return java.util.Collections.unmodifiableList(allHashes_);
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public int getAllHashesCount() {
        return allHashes_.size();
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public java.lang.String getAllHashes(int index) {
        return allHashes_.get(index);
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public com.google.protobuf.ByteString
          getAllHashesBytes(int index) {
        return allHashes_.getByteString(index);
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public Builder setAllHashes(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllHashesIsMutable();
        allHashes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public Builder addAllHashes(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllHashesIsMutable();
        allHashes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public Builder addAllAllHashes(
          java.lang.Iterable<java.lang.String> values) {
        ensureAllHashesIsMutable();
        super.addAll(values, allHashes_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public Builder clearAllHashes() {
        allHashes_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allHashes = 3;</code>
       */
      public Builder addAllHashesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllHashesIsMutable();
        allHashes_.add(value);
        onChanged();
        return this;
      }

      // repeated .Member members = 4;
      private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Member> members_ =
        java.util.Collections.emptyList();
      private void ensureMembersIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          members_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.Member>(members_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Member, akka.cluster.protobuf.msg.ClusterMessages.Member.Builder, akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder> membersBuilder_;

      /**
       * <code>repeated .Member members = 4;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Member> getMembersList() {
        if (membersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(members_);
        } else {
          return membersBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public int getMembersCount() {
        if (membersBuilder_ == null) {
          return members_.size();
        } else {
          return membersBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Member getMembers(int index) {
        if (membersBuilder_ == null) {
          return members_.get(index);
        } else {
          return membersBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder setMembers(
          int index, akka.cluster.protobuf.msg.ClusterMessages.Member value) {
        if (membersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMembersIsMutable();
          members_.set(index, value);
          onChanged();
        } else {
          membersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder setMembers(
          int index, akka.cluster.protobuf.msg.ClusterMessages.Member.Builder builderForValue) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          members_.set(index, builderForValue.build());
          onChanged();
        } else {
          membersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder addMembers(akka.cluster.protobuf.msg.ClusterMessages.Member value) {
        if (membersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMembersIsMutable();
          members_.add(value);
          onChanged();
        } else {
          membersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder addMembers(
          int index, akka.cluster.protobuf.msg.ClusterMessages.Member value) {
        if (membersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMembersIsMutable();
          members_.add(index, value);
          onChanged();
        } else {
          membersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder addMembers(
          akka.cluster.protobuf.msg.ClusterMessages.Member.Builder builderForValue) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          members_.add(builderForValue.build());
          onChanged();
        } else {
          membersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder addMembers(
          int index, akka.cluster.protobuf.msg.ClusterMessages.Member.Builder builderForValue) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          members_.add(index, builderForValue.build());
          onChanged();
        } else {
          membersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder addAllMembers(
          java.lang.Iterable<? extends akka.cluster.protobuf.msg.ClusterMessages.Member> values) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          super.addAll(values, members_);
          onChanged();
        } else {
          membersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder clearMembers() {
        if (membersBuilder_ == null) {
          members_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          membersBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public Builder removeMembers(int index) {
        if (membersBuilder_ == null) {
          ensureMembersIsMutable();
          members_.remove(index);
          onChanged();
        } else {
          membersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Member.Builder getMembersBuilder(
          int index) {
        return getMembersFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder getMembersOrBuilder(
          int index) {
        if (membersBuilder_ == null) {
          return members_.get(index);  } else {
          return membersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder> 
           getMembersOrBuilderList() {
        if (membersBuilder_ != null) {
          return membersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(members_);
        }
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Member.Builder addMembersBuilder() {
        return getMembersFieldBuilder().addBuilder(
            akka.cluster.protobuf.msg.ClusterMessages.Member.getDefaultInstance());
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Member.Builder addMembersBuilder(
          int index) {
        return getMembersFieldBuilder().addBuilder(
            index, akka.cluster.protobuf.msg.ClusterMessages.Member.getDefaultInstance());
      }
      /**
       * <code>repeated .Member members = 4;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Member.Builder> 
           getMembersBuilderList() {
        return getMembersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Member, akka.cluster.protobuf.msg.ClusterMessages.Member.Builder, akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder> 
          getMembersFieldBuilder() {
        if (membersBuilder_ == null) {
          membersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.Member, akka.cluster.protobuf.msg.ClusterMessages.Member.Builder, akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder>(
                  members_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          members_ = null;
        }
        return membersBuilder_;
      }

      // required .GossipOverview overview = 5;
      private akka.cluster.protobuf.msg.ClusterMessages.GossipOverview overview_ = akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.GossipOverview, akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.Builder, akka.cluster.protobuf.msg.ClusterMessages.GossipOverviewOrBuilder> overviewBuilder_;
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      public boolean hasOverview() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.GossipOverview getOverview() {
        if (overviewBuilder_ == null) {
          return overview_;
        } else {
          return overviewBuilder_.getMessage();
        }
      }
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      public Builder setOverview(akka.cluster.protobuf.msg.ClusterMessages.GossipOverview value) {
        if (overviewBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          overview_ = value;
          onChanged();
        } else {
          overviewBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      public Builder setOverview(
          akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.Builder builderForValue) {
        if (overviewBuilder_ == null) {
          overview_ = builderForValue.build();
          onChanged();
        } else {
          overviewBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      public Builder mergeOverview(akka.cluster.protobuf.msg.ClusterMessages.GossipOverview value) {
        if (overviewBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              overview_ != akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.getDefaultInstance()) {
            overview_ =
              akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.newBuilder(overview_).mergeFrom(value).buildPartial();
          } else {
            overview_ = value;
          }
          onChanged();
        } else {
          overviewBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      public Builder clearOverview() {
        if (overviewBuilder_ == null) {
          overview_ = akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.getDefaultInstance();
          onChanged();
        } else {
          overviewBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.Builder getOverviewBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getOverviewFieldBuilder().getBuilder();
      }
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.GossipOverviewOrBuilder getOverviewOrBuilder() {
        if (overviewBuilder_ != null) {
          return overviewBuilder_.getMessageOrBuilder();
        } else {
          return overview_;
        }
      }
      /**
       * <code>required .GossipOverview overview = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.GossipOverview, akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.Builder, akka.cluster.protobuf.msg.ClusterMessages.GossipOverviewOrBuilder> 
          getOverviewFieldBuilder() {
        if (overviewBuilder_ == null) {
          overviewBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.GossipOverview, akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.Builder, akka.cluster.protobuf.msg.ClusterMessages.GossipOverviewOrBuilder>(
                  overview_,
                  getParentForChildren(),
                  isClean());
          overview_ = null;
        }
        return overviewBuilder_;
      }

      // required .VectorClock version = 6;
      private akka.cluster.protobuf.msg.ClusterMessages.VectorClock version_ = akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder> versionBuilder_;
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock getVersion() {
        if (versionBuilder_ == null) {
          return version_;
        } else {
          return versionBuilder_.getMessage();
        }
      }
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      public Builder setVersion(akka.cluster.protobuf.msg.ClusterMessages.VectorClock value) {
        if (versionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          version_ = value;
          onChanged();
        } else {
          versionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      public Builder setVersion(
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder builderForValue) {
        if (versionBuilder_ == null) {
          version_ = builderForValue.build();
          onChanged();
        } else {
          versionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      public Builder mergeVersion(akka.cluster.protobuf.msg.ClusterMessages.VectorClock value) {
        if (versionBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020) &&
              version_ != akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance()) {
            version_ =
              akka.cluster.protobuf.msg.ClusterMessages.VectorClock.newBuilder(version_).mergeFrom(value).buildPartial();
          } else {
            version_ = value;
          }
          onChanged();
        } else {
          versionBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      public Builder clearVersion() {
        if (versionBuilder_ == null) {
          version_ = akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
          onChanged();
        } else {
          versionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder getVersionBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getVersionFieldBuilder().getBuilder();
      }
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder getVersionOrBuilder() {
        if (versionBuilder_ != null) {
          return versionBuilder_.getMessageOrBuilder();
        } else {
          return version_;
        }
      }
      /**
       * <code>required .VectorClock version = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder> 
          getVersionFieldBuilder() {
        if (versionBuilder_ == null) {
          versionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.VectorClock, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder>(
                  version_,
                  getParentForChildren(),
                  isClean());
          version_ = null;
        }
        return versionBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:Gossip)
    }

    static {
      defaultInstance = new Gossip(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Gossip)
  }

  public interface GossipOverviewOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated int32 seen = 1;
    /**
     * <code>repeated int32 seen = 1;</code>
     *
     * <pre>
     * This is the address indexes for the nodes that have seen this gossip 
     * </pre>
     */
    java.util.List<java.lang.Integer> getSeenList();
    /**
     * <code>repeated int32 seen = 1;</code>
     *
     * <pre>
     * This is the address indexes for the nodes that have seen this gossip 
     * </pre>
     */
    int getSeenCount();
    /**
     * <code>repeated int32 seen = 1;</code>
     *
     * <pre>
     * This is the address indexes for the nodes that have seen this gossip 
     * </pre>
     */
    int getSeen(int index);

    // repeated .ObserverReachability observerReachability = 2;
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    java.util.List<akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability> 
        getObserverReachabilityList();
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability getObserverReachability(int index);
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    int getObserverReachabilityCount();
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder> 
        getObserverReachabilityOrBuilderList();
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder getObserverReachabilityOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code GossipOverview}
   *
   * <pre>
   **
   * Gossip Overview
   * </pre>
   */
  public static final class GossipOverview extends
      com.google.protobuf.GeneratedMessage
      implements GossipOverviewOrBuilder {
    // Use GossipOverview.newBuilder() to construct.
    private GossipOverview(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GossipOverview(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GossipOverview defaultInstance;
    public static GossipOverview getDefaultInstance() {
      return defaultInstance;
    }

    public GossipOverview getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GossipOverview(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                seen_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              seen_.add(input.readInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                seen_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                seen_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                observerReachability_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability>();
                mutable_bitField0_ |= 0x00000002;
              }
              observerReachability_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          seen_ = java.util.Collections.unmodifiableList(seen_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          observerReachability_ = java.util.Collections.unmodifiableList(observerReachability_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipOverview_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipOverview_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.class, akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.Builder.class);
    }

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

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

    // repeated int32 seen = 1;
    public static final int SEEN_FIELD_NUMBER = 1;
    private java.util.List<java.lang.Integer> seen_;
    /**
     * <code>repeated int32 seen = 1;</code>
     *
     * <pre>
     * This is the address indexes for the nodes that have seen this gossip 
     * </pre>
     */
    public java.util.List<java.lang.Integer>
        getSeenList() {
      return seen_;
    }
    /**
     * <code>repeated int32 seen = 1;</code>
     *
     * <pre>
     * This is the address indexes for the nodes that have seen this gossip 
     * </pre>
     */
    public int getSeenCount() {
      return seen_.size();
    }
    /**
     * <code>repeated int32 seen = 1;</code>
     *
     * <pre>
     * This is the address indexes for the nodes that have seen this gossip 
     * </pre>
     */
    public int getSeen(int index) {
      return seen_.get(index);
    }

    // repeated .ObserverReachability observerReachability = 2;
    public static final int OBSERVERREACHABILITY_FIELD_NUMBER = 2;
    private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability> observerReachability_;
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability> getObserverReachabilityList() {
      return observerReachability_;
    }
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder> 
        getObserverReachabilityOrBuilderList() {
      return observerReachability_;
    }
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    public int getObserverReachabilityCount() {
      return observerReachability_.size();
    }
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability getObserverReachability(int index) {
      return observerReachability_.get(index);
    }
    /**
     * <code>repeated .ObserverReachability observerReachability = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder getObserverReachabilityOrBuilder(
        int index) {
      return observerReachability_.get(index);
    }

    private void initFields() {
      seen_ = java.util.Collections.emptyList();
      observerReachability_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getObserverReachabilityCount(); i++) {
        if (!getObserverReachability(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < seen_.size(); i++) {
        output.writeInt32(1, seen_.get(i));
      }
      for (int i = 0; i < observerReachability_.size(); i++) {
        output.writeMessage(2, observerReachability_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < seen_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(seen_.get(i));
        }
        size += dataSize;
        size += 1 * getSeenList().size();
      }
      for (int i = 0; i < observerReachability_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, observerReachability_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.GossipOverview prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GossipOverview}
     *
     * <pre>
     **
     * Gossip Overview
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.GossipOverviewOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipOverview_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipOverview_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.class, akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getObserverReachabilityFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        seen_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        if (observerReachabilityBuilder_ == null) {
          observerReachability_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          observerReachabilityBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_GossipOverview_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipOverview getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipOverview build() {
        akka.cluster.protobuf.msg.ClusterMessages.GossipOverview result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.GossipOverview buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.GossipOverview result = new akka.cluster.protobuf.msg.ClusterMessages.GossipOverview(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          seen_ = java.util.Collections.unmodifiableList(seen_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.seen_ = seen_;
        if (observerReachabilityBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            observerReachability_ = java.util.Collections.unmodifiableList(observerReachability_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.observerReachability_ = observerReachability_;
        } else {
          result.observerReachability_ = observerReachabilityBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.GossipOverview) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.GossipOverview)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.GossipOverview other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.GossipOverview.getDefaultInstance()) return this;
        if (!other.seen_.isEmpty()) {
          if (seen_.isEmpty()) {
            seen_ = other.seen_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSeenIsMutable();
            seen_.addAll(other.seen_);
          }
          onChanged();
        }
        if (observerReachabilityBuilder_ == null) {
          if (!other.observerReachability_.isEmpty()) {
            if (observerReachability_.isEmpty()) {
              observerReachability_ = other.observerReachability_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureObserverReachabilityIsMutable();
              observerReachability_.addAll(other.observerReachability_);
            }
            onChanged();
          }
        } else {
          if (!other.observerReachability_.isEmpty()) {
            if (observerReachabilityBuilder_.isEmpty()) {
              observerReachabilityBuilder_.dispose();
              observerReachabilityBuilder_ = null;
              observerReachability_ = other.observerReachability_;
              bitField0_ = (bitField0_ & ~0x00000002);
              observerReachabilityBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getObserverReachabilityFieldBuilder() : null;
            } else {
              observerReachabilityBuilder_.addAllMessages(other.observerReachability_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getObserverReachabilityCount(); i++) {
          if (!getObserverReachability(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.GossipOverview parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.GossipOverview) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated int32 seen = 1;
      private java.util.List<java.lang.Integer> seen_ = java.util.Collections.emptyList();
      private void ensureSeenIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          seen_ = new java.util.ArrayList<java.lang.Integer>(seen_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated int32 seen = 1;</code>
       *
       * <pre>
       * This is the address indexes for the nodes that have seen this gossip 
       * </pre>
       */
      public java.util.List<java.lang.Integer>
          getSeenList() {
        return java.util.Collections.unmodifiableList(seen_);
      }
      /**
       * <code>repeated int32 seen = 1;</code>
       *
       * <pre>
       * This is the address indexes for the nodes that have seen this gossip 
       * </pre>
       */
      public int getSeenCount() {
        return seen_.size();
      }
      /**
       * <code>repeated int32 seen = 1;</code>
       *
       * <pre>
       * This is the address indexes for the nodes that have seen this gossip 
       * </pre>
       */
      public int getSeen(int index) {
        return seen_.get(index);
      }
      /**
       * <code>repeated int32 seen = 1;</code>
       *
       * <pre>
       * This is the address indexes for the nodes that have seen this gossip 
       * </pre>
       */
      public Builder setSeen(
          int index, int value) {
        ensureSeenIsMutable();
        seen_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 seen = 1;</code>
       *
       * <pre>
       * This is the address indexes for the nodes that have seen this gossip 
       * </pre>
       */
      public Builder addSeen(int value) {
        ensureSeenIsMutable();
        seen_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 seen = 1;</code>
       *
       * <pre>
       * This is the address indexes for the nodes that have seen this gossip 
       * </pre>
       */
      public Builder addAllSeen(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSeenIsMutable();
        super.addAll(values, seen_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 seen = 1;</code>
       *
       * <pre>
       * This is the address indexes for the nodes that have seen this gossip 
       * </pre>
       */
      public Builder clearSeen() {
        seen_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      // repeated .ObserverReachability observerReachability = 2;
      private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability> observerReachability_ =
        java.util.Collections.emptyList();
      private void ensureObserverReachabilityIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          observerReachability_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability>(observerReachability_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder> observerReachabilityBuilder_;

      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability> getObserverReachabilityList() {
        if (observerReachabilityBuilder_ == null) {
          return java.util.Collections.unmodifiableList(observerReachability_);
        } else {
          return observerReachabilityBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public int getObserverReachabilityCount() {
        if (observerReachabilityBuilder_ == null) {
          return observerReachability_.size();
        } else {
          return observerReachabilityBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability getObserverReachability(int index) {
        if (observerReachabilityBuilder_ == null) {
          return observerReachability_.get(index);
        } else {
          return observerReachabilityBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder setObserverReachability(
          int index, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability value) {
        if (observerReachabilityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObserverReachabilityIsMutable();
          observerReachability_.set(index, value);
          onChanged();
        } else {
          observerReachabilityBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder setObserverReachability(
          int index, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder builderForValue) {
        if (observerReachabilityBuilder_ == null) {
          ensureObserverReachabilityIsMutable();
          observerReachability_.set(index, builderForValue.build());
          onChanged();
        } else {
          observerReachabilityBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder addObserverReachability(akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability value) {
        if (observerReachabilityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObserverReachabilityIsMutable();
          observerReachability_.add(value);
          onChanged();
        } else {
          observerReachabilityBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder addObserverReachability(
          int index, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability value) {
        if (observerReachabilityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObserverReachabilityIsMutable();
          observerReachability_.add(index, value);
          onChanged();
        } else {
          observerReachabilityBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder addObserverReachability(
          akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder builderForValue) {
        if (observerReachabilityBuilder_ == null) {
          ensureObserverReachabilityIsMutable();
          observerReachability_.add(builderForValue.build());
          onChanged();
        } else {
          observerReachabilityBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder addObserverReachability(
          int index, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder builderForValue) {
        if (observerReachabilityBuilder_ == null) {
          ensureObserverReachabilityIsMutable();
          observerReachability_.add(index, builderForValue.build());
          onChanged();
        } else {
          observerReachabilityBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder addAllObserverReachability(
          java.lang.Iterable<? extends akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability> values) {
        if (observerReachabilityBuilder_ == null) {
          ensureObserverReachabilityIsMutable();
          super.addAll(values, observerReachability_);
          onChanged();
        } else {
          observerReachabilityBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder clearObserverReachability() {
        if (observerReachabilityBuilder_ == null) {
          observerReachability_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          observerReachabilityBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public Builder removeObserverReachability(int index) {
        if (observerReachabilityBuilder_ == null) {
          ensureObserverReachabilityIsMutable();
          observerReachability_.remove(index);
          onChanged();
        } else {
          observerReachabilityBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder getObserverReachabilityBuilder(
          int index) {
        return getObserverReachabilityFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder getObserverReachabilityOrBuilder(
          int index) {
        if (observerReachabilityBuilder_ == null) {
          return observerReachability_.get(index);  } else {
          return observerReachabilityBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder> 
           getObserverReachabilityOrBuilderList() {
        if (observerReachabilityBuilder_ != null) {
          return observerReachabilityBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(observerReachability_);
        }
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder addObserverReachabilityBuilder() {
        return getObserverReachabilityFieldBuilder().addBuilder(
            akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.getDefaultInstance());
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder addObserverReachabilityBuilder(
          int index) {
        return getObserverReachabilityFieldBuilder().addBuilder(
            index, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.getDefaultInstance());
      }
      /**
       * <code>repeated .ObserverReachability observerReachability = 2;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder> 
           getObserverReachabilityBuilderList() {
        return getObserverReachabilityFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder> 
          getObserverReachabilityFieldBuilder() {
        if (observerReachabilityBuilder_ == null) {
          observerReachabilityBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder>(
                  observerReachability_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          observerReachability_ = null;
        }
        return observerReachabilityBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:GossipOverview)
    }

    static {
      defaultInstance = new GossipOverview(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GossipOverview)
  }

  public interface ObserverReachabilityOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 addressIndex = 1;
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    boolean hasAddressIndex();
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    int getAddressIndex();

    // required int64 version = 4;
    /**
     * <code>required int64 version = 4;</code>
     */
    boolean hasVersion();
    /**
     * <code>required int64 version = 4;</code>
     */
    long getVersion();

    // repeated .SubjectReachability subjectReachability = 2;
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    java.util.List<akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability> 
        getSubjectReachabilityList();
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability getSubjectReachability(int index);
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    int getSubjectReachabilityCount();
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder> 
        getSubjectReachabilityOrBuilderList();
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder getSubjectReachabilityOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code ObserverReachability}
   *
   * <pre>
   **
   * Reachability
   * </pre>
   */
  public static final class ObserverReachability extends
      com.google.protobuf.GeneratedMessage
      implements ObserverReachabilityOrBuilder {
    // Use ObserverReachability.newBuilder() to construct.
    private ObserverReachability(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ObserverReachability(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ObserverReachability defaultInstance;
    public static ObserverReachability getDefaultInstance() {
      return defaultInstance;
    }

    public ObserverReachability getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ObserverReachability(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              addressIndex_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                subjectReachability_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability>();
                mutable_bitField0_ |= 0x00000004;
              }
              subjectReachability_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.PARSER, extensionRegistry));
              break;
            }
            case 32: {
              bitField0_ |= 0x00000002;
              version_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          subjectReachability_ = java.util.Collections.unmodifiableList(subjectReachability_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_ObserverReachability_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_ObserverReachability_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.class, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder.class);
    }

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

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

    private int bitField0_;
    // required int32 addressIndex = 1;
    public static final int ADDRESSINDEX_FIELD_NUMBER = 1;
    private int addressIndex_;
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    public boolean hasAddressIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    public int getAddressIndex() {
      return addressIndex_;
    }

    // required int64 version = 4;
    public static final int VERSION_FIELD_NUMBER = 4;
    private long version_;
    /**
     * <code>required int64 version = 4;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int64 version = 4;</code>
     */
    public long getVersion() {
      return version_;
    }

    // repeated .SubjectReachability subjectReachability = 2;
    public static final int SUBJECTREACHABILITY_FIELD_NUMBER = 2;
    private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability> subjectReachability_;
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability> getSubjectReachabilityList() {
      return subjectReachability_;
    }
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder> 
        getSubjectReachabilityOrBuilderList() {
      return subjectReachability_;
    }
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    public int getSubjectReachabilityCount() {
      return subjectReachability_.size();
    }
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability getSubjectReachability(int index) {
      return subjectReachability_.get(index);
    }
    /**
     * <code>repeated .SubjectReachability subjectReachability = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder getSubjectReachabilityOrBuilder(
        int index) {
      return subjectReachability_.get(index);
    }

    private void initFields() {
      addressIndex_ = 0;
      version_ = 0L;
      subjectReachability_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasAddressIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSubjectReachabilityCount(); i++) {
        if (!getSubjectReachability(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, addressIndex_);
      }
      for (int i = 0; i < subjectReachability_.size(); i++) {
        output.writeMessage(2, subjectReachability_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(4, version_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, addressIndex_);
      }
      for (int i = 0; i < subjectReachability_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, subjectReachability_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, version_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code ObserverReachability}
     *
     * <pre>
     **
     * Reachability
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.ObserverReachabilityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_ObserverReachability_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_ObserverReachability_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.class, akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getSubjectReachabilityFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        addressIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (subjectReachabilityBuilder_ == null) {
          subjectReachability_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          subjectReachabilityBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_ObserverReachability_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability build() {
        akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability result = new akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.addressIndex_ = addressIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.version_ = version_;
        if (subjectReachabilityBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            subjectReachability_ = java.util.Collections.unmodifiableList(subjectReachability_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.subjectReachability_ = subjectReachability_;
        } else {
          result.subjectReachability_ = subjectReachabilityBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability.getDefaultInstance()) return this;
        if (other.hasAddressIndex()) {
          setAddressIndex(other.getAddressIndex());
        }
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (subjectReachabilityBuilder_ == null) {
          if (!other.subjectReachability_.isEmpty()) {
            if (subjectReachability_.isEmpty()) {
              subjectReachability_ = other.subjectReachability_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureSubjectReachabilityIsMutable();
              subjectReachability_.addAll(other.subjectReachability_);
            }
            onChanged();
          }
        } else {
          if (!other.subjectReachability_.isEmpty()) {
            if (subjectReachabilityBuilder_.isEmpty()) {
              subjectReachabilityBuilder_.dispose();
              subjectReachabilityBuilder_ = null;
              subjectReachability_ = other.subjectReachability_;
              bitField0_ = (bitField0_ & ~0x00000004);
              subjectReachabilityBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSubjectReachabilityFieldBuilder() : null;
            } else {
              subjectReachabilityBuilder_.addAllMessages(other.subjectReachability_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAddressIndex()) {
          
          return false;
        }
        if (!hasVersion()) {
          
          return false;
        }
        for (int i = 0; i < getSubjectReachabilityCount(); i++) {
          if (!getSubjectReachability(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.ObserverReachability) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 addressIndex = 1;
      private int addressIndex_ ;
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public boolean hasAddressIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public int getAddressIndex() {
        return addressIndex_;
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public Builder setAddressIndex(int value) {
        bitField0_ |= 0x00000001;
        addressIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public Builder clearAddressIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        addressIndex_ = 0;
        onChanged();
        return this;
      }

      // required int64 version = 4;
      private long version_ ;
      /**
       * <code>required int64 version = 4;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int64 version = 4;</code>
       */
      public long getVersion() {
        return version_;
      }
      /**
       * <code>required int64 version = 4;</code>
       */
      public Builder setVersion(long value) {
        bitField0_ |= 0x00000002;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 version = 4;</code>
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000002);
        version_ = 0L;
        onChanged();
        return this;
      }

      // repeated .SubjectReachability subjectReachability = 2;
      private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability> subjectReachability_ =
        java.util.Collections.emptyList();
      private void ensureSubjectReachabilityIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          subjectReachability_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability>(subjectReachability_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder> subjectReachabilityBuilder_;

      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability> getSubjectReachabilityList() {
        if (subjectReachabilityBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subjectReachability_);
        } else {
          return subjectReachabilityBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public int getSubjectReachabilityCount() {
        if (subjectReachabilityBuilder_ == null) {
          return subjectReachability_.size();
        } else {
          return subjectReachabilityBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability getSubjectReachability(int index) {
        if (subjectReachabilityBuilder_ == null) {
          return subjectReachability_.get(index);
        } else {
          return subjectReachabilityBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder setSubjectReachability(
          int index, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability value) {
        if (subjectReachabilityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectReachabilityIsMutable();
          subjectReachability_.set(index, value);
          onChanged();
        } else {
          subjectReachabilityBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder setSubjectReachability(
          int index, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder builderForValue) {
        if (subjectReachabilityBuilder_ == null) {
          ensureSubjectReachabilityIsMutable();
          subjectReachability_.set(index, builderForValue.build());
          onChanged();
        } else {
          subjectReachabilityBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder addSubjectReachability(akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability value) {
        if (subjectReachabilityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectReachabilityIsMutable();
          subjectReachability_.add(value);
          onChanged();
        } else {
          subjectReachabilityBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder addSubjectReachability(
          int index, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability value) {
        if (subjectReachabilityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectReachabilityIsMutable();
          subjectReachability_.add(index, value);
          onChanged();
        } else {
          subjectReachabilityBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder addSubjectReachability(
          akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder builderForValue) {
        if (subjectReachabilityBuilder_ == null) {
          ensureSubjectReachabilityIsMutable();
          subjectReachability_.add(builderForValue.build());
          onChanged();
        } else {
          subjectReachabilityBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder addSubjectReachability(
          int index, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder builderForValue) {
        if (subjectReachabilityBuilder_ == null) {
          ensureSubjectReachabilityIsMutable();
          subjectReachability_.add(index, builderForValue.build());
          onChanged();
        } else {
          subjectReachabilityBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder addAllSubjectReachability(
          java.lang.Iterable<? extends akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability> values) {
        if (subjectReachabilityBuilder_ == null) {
          ensureSubjectReachabilityIsMutable();
          super.addAll(values, subjectReachability_);
          onChanged();
        } else {
          subjectReachabilityBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder clearSubjectReachability() {
        if (subjectReachabilityBuilder_ == null) {
          subjectReachability_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          subjectReachabilityBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public Builder removeSubjectReachability(int index) {
        if (subjectReachabilityBuilder_ == null) {
          ensureSubjectReachabilityIsMutable();
          subjectReachability_.remove(index);
          onChanged();
        } else {
          subjectReachabilityBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder getSubjectReachabilityBuilder(
          int index) {
        return getSubjectReachabilityFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder getSubjectReachabilityOrBuilder(
          int index) {
        if (subjectReachabilityBuilder_ == null) {
          return subjectReachability_.get(index);  } else {
          return subjectReachabilityBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder> 
           getSubjectReachabilityOrBuilderList() {
        if (subjectReachabilityBuilder_ != null) {
          return subjectReachabilityBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subjectReachability_);
        }
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder addSubjectReachabilityBuilder() {
        return getSubjectReachabilityFieldBuilder().addBuilder(
            akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.getDefaultInstance());
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder addSubjectReachabilityBuilder(
          int index) {
        return getSubjectReachabilityFieldBuilder().addBuilder(
            index, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.getDefaultInstance());
      }
      /**
       * <code>repeated .SubjectReachability subjectReachability = 2;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder> 
           getSubjectReachabilityBuilderList() {
        return getSubjectReachabilityFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder> 
          getSubjectReachabilityFieldBuilder() {
        if (subjectReachabilityBuilder_ == null) {
          subjectReachabilityBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder>(
                  subjectReachability_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          subjectReachability_ = null;
        }
        return subjectReachabilityBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:ObserverReachability)
    }

    static {
      defaultInstance = new ObserverReachability(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:ObserverReachability)
  }

  public interface SubjectReachabilityOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 addressIndex = 1;
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    boolean hasAddressIndex();
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    int getAddressIndex();

    // required .ReachabilityStatus status = 3;
    /**
     * <code>required .ReachabilityStatus status = 3;</code>
     */
    boolean hasStatus();
    /**
     * <code>required .ReachabilityStatus status = 3;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus getStatus();

    // required int64 version = 4;
    /**
     * <code>required int64 version = 4;</code>
     */
    boolean hasVersion();
    /**
     * <code>required int64 version = 4;</code>
     */
    long getVersion();
  }
  /**
   * Protobuf type {@code SubjectReachability}
   */
  public static final class SubjectReachability extends
      com.google.protobuf.GeneratedMessage
      implements SubjectReachabilityOrBuilder {
    // Use SubjectReachability.newBuilder() to construct.
    private SubjectReachability(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SubjectReachability(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SubjectReachability defaultInstance;
    public static SubjectReachability getDefaultInstance() {
      return defaultInstance;
    }

    public SubjectReachability getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SubjectReachability(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              addressIndex_ = input.readInt32();
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus value = akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(3, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                status_ = value;
              }
              break;
            }
            case 32: {
              bitField0_ |= 0x00000004;
              version_ = input.readInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_SubjectReachability_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_SubjectReachability_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.class, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder.class);
    }

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

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

    private int bitField0_;
    // required int32 addressIndex = 1;
    public static final int ADDRESSINDEX_FIELD_NUMBER = 1;
    private int addressIndex_;
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    public boolean hasAddressIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    public int getAddressIndex() {
      return addressIndex_;
    }

    // required .ReachabilityStatus status = 3;
    public static final int STATUS_FIELD_NUMBER = 3;
    private akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus status_;
    /**
     * <code>required .ReachabilityStatus status = 3;</code>
     */
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .ReachabilityStatus status = 3;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus getStatus() {
      return status_;
    }

    // required int64 version = 4;
    public static final int VERSION_FIELD_NUMBER = 4;
    private long version_;
    /**
     * <code>required int64 version = 4;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required int64 version = 4;</code>
     */
    public long getVersion() {
      return version_;
    }

    private void initFields() {
      addressIndex_ = 0;
      status_ = akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus.Reachable;
      version_ = 0L;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasAddressIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStatus()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, addressIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(3, status_.getNumber());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt64(4, version_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, addressIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, status_.getNumber());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, version_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SubjectReachability}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.SubjectReachabilityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_SubjectReachability_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_SubjectReachability_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.class, akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        addressIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        status_ = akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus.Reachable;
        bitField0_ = (bitField0_ & ~0x00000002);
        version_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_SubjectReachability_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability build() {
        akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability result = new akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.addressIndex_ = addressIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.status_ = status_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.version_ = version_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability.getDefaultInstance()) return this;
        if (other.hasAddressIndex()) {
          setAddressIndex(other.getAddressIndex());
        }
        if (other.hasStatus()) {
          setStatus(other.getStatus());
        }
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAddressIndex()) {
          
          return false;
        }
        if (!hasStatus()) {
          
          return false;
        }
        if (!hasVersion()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.SubjectReachability) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 addressIndex = 1;
      private int addressIndex_ ;
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public boolean hasAddressIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public int getAddressIndex() {
        return addressIndex_;
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public Builder setAddressIndex(int value) {
        bitField0_ |= 0x00000001;
        addressIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public Builder clearAddressIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        addressIndex_ = 0;
        onChanged();
        return this;
      }

      // required .ReachabilityStatus status = 3;
      private akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus status_ = akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus.Reachable;
      /**
       * <code>required .ReachabilityStatus status = 3;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .ReachabilityStatus status = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus getStatus() {
        return status_;
      }
      /**
       * <code>required .ReachabilityStatus status = 3;</code>
       */
      public Builder setStatus(akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required .ReachabilityStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000002);
        status_ = akka.cluster.protobuf.msg.ClusterMessages.ReachabilityStatus.Reachable;
        onChanged();
        return this;
      }

      // required int64 version = 4;
      private long version_ ;
      /**
       * <code>required int64 version = 4;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required int64 version = 4;</code>
       */
      public long getVersion() {
        return version_;
      }
      /**
       * <code>required int64 version = 4;</code>
       */
      public Builder setVersion(long value) {
        bitField0_ |= 0x00000004;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 version = 4;</code>
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000004);
        version_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:SubjectReachability)
    }

    static {
      defaultInstance = new SubjectReachability(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:SubjectReachability)
  }

  public interface MemberOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 addressIndex = 1;
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    boolean hasAddressIndex();
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    int getAddressIndex();

    // required int32 upNumber = 2;
    /**
     * <code>required int32 upNumber = 2;</code>
     */
    boolean hasUpNumber();
    /**
     * <code>required int32 upNumber = 2;</code>
     */
    int getUpNumber();

    // required .MemberStatus status = 3;
    /**
     * <code>required .MemberStatus status = 3;</code>
     */
    boolean hasStatus();
    /**
     * <code>required .MemberStatus status = 3;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.MemberStatus getStatus();

    // repeated int32 rolesIndexes = 4 [packed = true];
    /**
     * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
     */
    java.util.List<java.lang.Integer> getRolesIndexesList();
    /**
     * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
     */
    int getRolesIndexesCount();
    /**
     * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
     */
    int getRolesIndexes(int index);
  }
  /**
   * Protobuf type {@code Member}
   *
   * <pre>
   **
   * Member
   * </pre>
   */
  public static final class Member extends
      com.google.protobuf.GeneratedMessage
      implements MemberOrBuilder {
    // Use Member.newBuilder() to construct.
    private Member(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Member(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Member defaultInstance;
    public static Member getDefaultInstance() {
      return defaultInstance;
    }

    public Member getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Member(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              addressIndex_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              upNumber_ = input.readInt32();
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              akka.cluster.protobuf.msg.ClusterMessages.MemberStatus value = akka.cluster.protobuf.msg.ClusterMessages.MemberStatus.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(3, rawValue);
              } else {
                bitField0_ |= 0x00000004;
                status_ = value;
              }
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                rolesIndexes_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              rolesIndexes_.add(input.readInt32());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                rolesIndexes_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              while (input.getBytesUntilLimit() > 0) {
                rolesIndexes_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          rolesIndexes_ = java.util.Collections.unmodifiableList(rolesIndexes_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Member_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Member_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.Member.class, akka.cluster.protobuf.msg.ClusterMessages.Member.Builder.class);
    }

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

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

    private int bitField0_;
    // required int32 addressIndex = 1;
    public static final int ADDRESSINDEX_FIELD_NUMBER = 1;
    private int addressIndex_;
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    public boolean hasAddressIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    public int getAddressIndex() {
      return addressIndex_;
    }

    // required int32 upNumber = 2;
    public static final int UPNUMBER_FIELD_NUMBER = 2;
    private int upNumber_;
    /**
     * <code>required int32 upNumber = 2;</code>
     */
    public boolean hasUpNumber() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 upNumber = 2;</code>
     */
    public int getUpNumber() {
      return upNumber_;
    }

    // required .MemberStatus status = 3;
    public static final int STATUS_FIELD_NUMBER = 3;
    private akka.cluster.protobuf.msg.ClusterMessages.MemberStatus status_;
    /**
     * <code>required .MemberStatus status = 3;</code>
     */
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .MemberStatus status = 3;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.MemberStatus getStatus() {
      return status_;
    }

    // repeated int32 rolesIndexes = 4 [packed = true];
    public static final int ROLESINDEXES_FIELD_NUMBER = 4;
    private java.util.List<java.lang.Integer> rolesIndexes_;
    /**
     * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
     */
    public java.util.List<java.lang.Integer>
        getRolesIndexesList() {
      return rolesIndexes_;
    }
    /**
     * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
     */
    public int getRolesIndexesCount() {
      return rolesIndexes_.size();
    }
    /**
     * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
     */
    public int getRolesIndexes(int index) {
      return rolesIndexes_.get(index);
    }
    private int rolesIndexesMemoizedSerializedSize = -1;

    private void initFields() {
      addressIndex_ = 0;
      upNumber_ = 0;
      status_ = akka.cluster.protobuf.msg.ClusterMessages.MemberStatus.Joining;
      rolesIndexes_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasAddressIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUpNumber()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStatus()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, addressIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, upNumber_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, status_.getNumber());
      }
      if (getRolesIndexesList().size() > 0) {
        output.writeRawVarint32(34);
        output.writeRawVarint32(rolesIndexesMemoizedSerializedSize);
      }
      for (int i = 0; i < rolesIndexes_.size(); i++) {
        output.writeInt32NoTag(rolesIndexes_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, addressIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, upNumber_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, status_.getNumber());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < rolesIndexes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(rolesIndexes_.get(i));
        }
        size += dataSize;
        if (!getRolesIndexesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        rolesIndexesMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Member parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.Member prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Member}
     *
     * <pre>
     **
     * Member
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.MemberOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Member_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Member_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.Member.class, akka.cluster.protobuf.msg.ClusterMessages.Member.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.Member.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        addressIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        upNumber_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        status_ = akka.cluster.protobuf.msg.ClusterMessages.MemberStatus.Joining;
        bitField0_ = (bitField0_ & ~0x00000004);
        rolesIndexes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Member_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Member getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.Member.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Member build() {
        akka.cluster.protobuf.msg.ClusterMessages.Member result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Member buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.Member result = new akka.cluster.protobuf.msg.ClusterMessages.Member(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.addressIndex_ = addressIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.upNumber_ = upNumber_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.status_ = status_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          rolesIndexes_ = java.util.Collections.unmodifiableList(rolesIndexes_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.rolesIndexes_ = rolesIndexes_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.Member) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.Member)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.Member other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.Member.getDefaultInstance()) return this;
        if (other.hasAddressIndex()) {
          setAddressIndex(other.getAddressIndex());
        }
        if (other.hasUpNumber()) {
          setUpNumber(other.getUpNumber());
        }
        if (other.hasStatus()) {
          setStatus(other.getStatus());
        }
        if (!other.rolesIndexes_.isEmpty()) {
          if (rolesIndexes_.isEmpty()) {
            rolesIndexes_ = other.rolesIndexes_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureRolesIndexesIsMutable();
            rolesIndexes_.addAll(other.rolesIndexes_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAddressIndex()) {
          
          return false;
        }
        if (!hasUpNumber()) {
          
          return false;
        }
        if (!hasStatus()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.Member parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.Member) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 addressIndex = 1;
      private int addressIndex_ ;
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public boolean hasAddressIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public int getAddressIndex() {
        return addressIndex_;
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public Builder setAddressIndex(int value) {
        bitField0_ |= 0x00000001;
        addressIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public Builder clearAddressIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        addressIndex_ = 0;
        onChanged();
        return this;
      }

      // required int32 upNumber = 2;
      private int upNumber_ ;
      /**
       * <code>required int32 upNumber = 2;</code>
       */
      public boolean hasUpNumber() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 upNumber = 2;</code>
       */
      public int getUpNumber() {
        return upNumber_;
      }
      /**
       * <code>required int32 upNumber = 2;</code>
       */
      public Builder setUpNumber(int value) {
        bitField0_ |= 0x00000002;
        upNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 upNumber = 2;</code>
       */
      public Builder clearUpNumber() {
        bitField0_ = (bitField0_ & ~0x00000002);
        upNumber_ = 0;
        onChanged();
        return this;
      }

      // required .MemberStatus status = 3;
      private akka.cluster.protobuf.msg.ClusterMessages.MemberStatus status_ = akka.cluster.protobuf.msg.ClusterMessages.MemberStatus.Joining;
      /**
       * <code>required .MemberStatus status = 3;</code>
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required .MemberStatus status = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.MemberStatus getStatus() {
        return status_;
      }
      /**
       * <code>required .MemberStatus status = 3;</code>
       */
      public Builder setStatus(akka.cluster.protobuf.msg.ClusterMessages.MemberStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required .MemberStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = akka.cluster.protobuf.msg.ClusterMessages.MemberStatus.Joining;
        onChanged();
        return this;
      }

      // repeated int32 rolesIndexes = 4 [packed = true];
      private java.util.List<java.lang.Integer> rolesIndexes_ = java.util.Collections.emptyList();
      private void ensureRolesIndexesIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          rolesIndexes_ = new java.util.ArrayList<java.lang.Integer>(rolesIndexes_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
       */
      public java.util.List<java.lang.Integer>
          getRolesIndexesList() {
        return java.util.Collections.unmodifiableList(rolesIndexes_);
      }
      /**
       * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
       */
      public int getRolesIndexesCount() {
        return rolesIndexes_.size();
      }
      /**
       * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
       */
      public int getRolesIndexes(int index) {
        return rolesIndexes_.get(index);
      }
      /**
       * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
       */
      public Builder setRolesIndexes(
          int index, int value) {
        ensureRolesIndexesIsMutable();
        rolesIndexes_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
       */
      public Builder addRolesIndexes(int value) {
        ensureRolesIndexesIsMutable();
        rolesIndexes_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
       */
      public Builder addAllRolesIndexes(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureRolesIndexesIsMutable();
        super.addAll(values, rolesIndexes_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 rolesIndexes = 4 [packed = true];</code>
       */
      public Builder clearRolesIndexes() {
        rolesIndexes_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Member)
    }

    static {
      defaultInstance = new Member(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Member)
  }

  public interface VectorClockOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional int64 timestamp = 1;
    /**
     * <code>optional int64 timestamp = 1;</code>
     *
     * <pre>
     * the timestamp could be removed but left for test data compatibility
     * </pre>
     */
    boolean hasTimestamp();
    /**
     * <code>optional int64 timestamp = 1;</code>
     *
     * <pre>
     * the timestamp could be removed but left for test data compatibility
     * </pre>
     */
    long getTimestamp();

    // repeated .VectorClock.Version versions = 2;
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    java.util.List<akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version> 
        getVersionsList();
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version getVersions(int index);
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    int getVersionsCount();
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder> 
        getVersionsOrBuilderList();
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder getVersionsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code VectorClock}
   *
   * <pre>
   **
   * Vector Clock
   * </pre>
   */
  public static final class VectorClock extends
      com.google.protobuf.GeneratedMessage
      implements VectorClockOrBuilder {
    // Use VectorClock.newBuilder() to construct.
    private VectorClock(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private VectorClock(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final VectorClock defaultInstance;
    public static VectorClock getDefaultInstance() {
      return defaultInstance;
    }

    public VectorClock getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private VectorClock(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              timestamp_ = input.readInt64();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                versions_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version>();
                mutable_bitField0_ |= 0x00000002;
              }
              versions_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          versions_ = java.util.Collections.unmodifiableList(versions_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.VectorClock.class, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder.class);
    }

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

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

    public interface VersionOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // required int32 hashIndex = 1;
      /**
       * <code>required int32 hashIndex = 1;</code>
       */
      boolean hasHashIndex();
      /**
       * <code>required int32 hashIndex = 1;</code>
       */
      int getHashIndex();

      // required int64 timestamp = 2;
      /**
       * <code>required int64 timestamp = 2;</code>
       */
      boolean hasTimestamp();
      /**
       * <code>required int64 timestamp = 2;</code>
       */
      long getTimestamp();
    }
    /**
     * Protobuf type {@code VectorClock.Version}
     */
    public static final class Version extends
        com.google.protobuf.GeneratedMessage
        implements VersionOrBuilder {
      // Use Version.newBuilder() to construct.
      private Version(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Version(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final Version defaultInstance;
      public static Version getDefaultInstance() {
        return defaultInstance;
      }

      public Version getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Version(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        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 (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                hashIndex_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                timestamp_ = input.readInt64();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_Version_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_Version_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.class, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder.class);
      }

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

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

      private int bitField0_;
      // required int32 hashIndex = 1;
      public static final int HASHINDEX_FIELD_NUMBER = 1;
      private int hashIndex_;
      /**
       * <code>required int32 hashIndex = 1;</code>
       */
      public boolean hasHashIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 hashIndex = 1;</code>
       */
      public int getHashIndex() {
        return hashIndex_;
      }

      // required int64 timestamp = 2;
      public static final int TIMESTAMP_FIELD_NUMBER = 2;
      private long timestamp_;
      /**
       * <code>required int64 timestamp = 2;</code>
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int64 timestamp = 2;</code>
       */
      public long getTimestamp() {
        return timestamp_;
      }

      private void initFields() {
        hashIndex_ = 0;
        timestamp_ = 0L;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (!hasHashIndex()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTimestamp()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, hashIndex_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt64(2, timestamp_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, hashIndex_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, timestamp_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code VectorClock.Version}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_Version_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_Version_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.class, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder.class);
        }

        // Construct using akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          hashIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          timestamp_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_Version_descriptor;
        }

        public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version getDefaultInstanceForType() {
          return akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.getDefaultInstance();
        }

        public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version build() {
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version buildPartial() {
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version result = new akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.hashIndex_ = hashIndex_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.timestamp_ = timestamp_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version) {
            return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version other) {
          if (other == akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.getDefaultInstance()) return this;
          if (other.hasHashIndex()) {
            setHashIndex(other.getHashIndex());
          }
          if (other.hasTimestamp()) {
            setTimestamp(other.getTimestamp());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          if (!hasHashIndex()) {
            
            return false;
          }
          if (!hasTimestamp()) {
            
            return false;
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // required int32 hashIndex = 1;
        private int hashIndex_ ;
        /**
         * <code>required int32 hashIndex = 1;</code>
         */
        public boolean hasHashIndex() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 hashIndex = 1;</code>
         */
        public int getHashIndex() {
          return hashIndex_;
        }
        /**
         * <code>required int32 hashIndex = 1;</code>
         */
        public Builder setHashIndex(int value) {
          bitField0_ |= 0x00000001;
          hashIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 hashIndex = 1;</code>
         */
        public Builder clearHashIndex() {
          bitField0_ = (bitField0_ & ~0x00000001);
          hashIndex_ = 0;
          onChanged();
          return this;
        }

        // required int64 timestamp = 2;
        private long timestamp_ ;
        /**
         * <code>required int64 timestamp = 2;</code>
         */
        public boolean hasTimestamp() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int64 timestamp = 2;</code>
         */
        public long getTimestamp() {
          return timestamp_;
        }
        /**
         * <code>required int64 timestamp = 2;</code>
         */
        public Builder setTimestamp(long value) {
          bitField0_ |= 0x00000002;
          timestamp_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int64 timestamp = 2;</code>
         */
        public Builder clearTimestamp() {
          bitField0_ = (bitField0_ & ~0x00000002);
          timestamp_ = 0L;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:VectorClock.Version)
      }

      static {
        defaultInstance = new Version(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:VectorClock.Version)
    }

    private int bitField0_;
    // optional int64 timestamp = 1;
    public static final int TIMESTAMP_FIELD_NUMBER = 1;
    private long timestamp_;
    /**
     * <code>optional int64 timestamp = 1;</code>
     *
     * <pre>
     * the timestamp could be removed but left for test data compatibility
     * </pre>
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int64 timestamp = 1;</code>
     *
     * <pre>
     * the timestamp could be removed but left for test data compatibility
     * </pre>
     */
    public long getTimestamp() {
      return timestamp_;
    }

    // repeated .VectorClock.Version versions = 2;
    public static final int VERSIONS_FIELD_NUMBER = 2;
    private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version> versions_;
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version> getVersionsList() {
      return versions_;
    }
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder> 
        getVersionsOrBuilderList() {
      return versions_;
    }
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    public int getVersionsCount() {
      return versions_.size();
    }
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version getVersions(int index) {
      return versions_.get(index);
    }
    /**
     * <code>repeated .VectorClock.Version versions = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder getVersionsOrBuilder(
        int index) {
      return versions_.get(index);
    }

    private void initFields() {
      timestamp_ = 0L;
      versions_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getVersionsCount(); i++) {
        if (!getVersions(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(1, timestamp_);
      }
      for (int i = 0; i < versions_.size(); i++) {
        output.writeMessage(2, versions_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, timestamp_);
      }
      for (int i = 0; i < versions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, versions_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.VectorClock parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.VectorClock prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code VectorClock}
     *
     * <pre>
     **
     * Vector Clock
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.VectorClockOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.VectorClock.class, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.VectorClock.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getVersionsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        timestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (versionsBuilder_ == null) {
          versions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          versionsBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_VectorClock_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock build() {
        akka.cluster.protobuf.msg.ClusterMessages.VectorClock result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.VectorClock result = new akka.cluster.protobuf.msg.ClusterMessages.VectorClock(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.timestamp_ = timestamp_;
        if (versionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            versions_ = java.util.Collections.unmodifiableList(versions_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.versions_ = versions_;
        } else {
          result.versions_ = versionsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.VectorClock) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.VectorClock)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.VectorClock other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.VectorClock.getDefaultInstance()) return this;
        if (other.hasTimestamp()) {
          setTimestamp(other.getTimestamp());
        }
        if (versionsBuilder_ == null) {
          if (!other.versions_.isEmpty()) {
            if (versions_.isEmpty()) {
              versions_ = other.versions_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureVersionsIsMutable();
              versions_.addAll(other.versions_);
            }
            onChanged();
          }
        } else {
          if (!other.versions_.isEmpty()) {
            if (versionsBuilder_.isEmpty()) {
              versionsBuilder_.dispose();
              versionsBuilder_ = null;
              versions_ = other.versions_;
              bitField0_ = (bitField0_ & ~0x00000002);
              versionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVersionsFieldBuilder() : null;
            } else {
              versionsBuilder_.addAllMessages(other.versions_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getVersionsCount(); i++) {
          if (!getVersions(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.VectorClock parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.VectorClock) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int64 timestamp = 1;
      private long timestamp_ ;
      /**
       * <code>optional int64 timestamp = 1;</code>
       *
       * <pre>
       * the timestamp could be removed but left for test data compatibility
       * </pre>
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int64 timestamp = 1;</code>
       *
       * <pre>
       * the timestamp could be removed but left for test data compatibility
       * </pre>
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <code>optional int64 timestamp = 1;</code>
       *
       * <pre>
       * the timestamp could be removed but left for test data compatibility
       * </pre>
       */
      public Builder setTimestamp(long value) {
        bitField0_ |= 0x00000001;
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 timestamp = 1;</code>
       *
       * <pre>
       * the timestamp could be removed but left for test data compatibility
       * </pre>
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000001);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      // repeated .VectorClock.Version versions = 2;
      private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version> versions_ =
        java.util.Collections.emptyList();
      private void ensureVersionsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          versions_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version>(versions_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder> versionsBuilder_;

      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version> getVersionsList() {
        if (versionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(versions_);
        } else {
          return versionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public int getVersionsCount() {
        if (versionsBuilder_ == null) {
          return versions_.size();
        } else {
          return versionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version getVersions(int index) {
        if (versionsBuilder_ == null) {
          return versions_.get(index);
        } else {
          return versionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder setVersions(
          int index, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version value) {
        if (versionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVersionsIsMutable();
          versions_.set(index, value);
          onChanged();
        } else {
          versionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder setVersions(
          int index, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder builderForValue) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          versions_.set(index, builderForValue.build());
          onChanged();
        } else {
          versionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder addVersions(akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version value) {
        if (versionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVersionsIsMutable();
          versions_.add(value);
          onChanged();
        } else {
          versionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder addVersions(
          int index, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version value) {
        if (versionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVersionsIsMutable();
          versions_.add(index, value);
          onChanged();
        } else {
          versionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder addVersions(
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder builderForValue) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          versions_.add(builderForValue.build());
          onChanged();
        } else {
          versionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder addVersions(
          int index, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder builderForValue) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          versions_.add(index, builderForValue.build());
          onChanged();
        } else {
          versionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder addAllVersions(
          java.lang.Iterable<? extends akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version> values) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          super.addAll(values, versions_);
          onChanged();
        } else {
          versionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder clearVersions() {
        if (versionsBuilder_ == null) {
          versions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          versionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public Builder removeVersions(int index) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          versions_.remove(index);
          onChanged();
        } else {
          versionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder getVersionsBuilder(
          int index) {
        return getVersionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder getVersionsOrBuilder(
          int index) {
        if (versionsBuilder_ == null) {
          return versions_.get(index);  } else {
          return versionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder> 
           getVersionsOrBuilderList() {
        if (versionsBuilder_ != null) {
          return versionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(versions_);
        }
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder addVersionsBuilder() {
        return getVersionsFieldBuilder().addBuilder(
            akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.getDefaultInstance());
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder addVersionsBuilder(
          int index) {
        return getVersionsFieldBuilder().addBuilder(
            index, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.getDefaultInstance());
      }
      /**
       * <code>repeated .VectorClock.Version versions = 2;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder> 
           getVersionsBuilderList() {
        return getVersionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder> 
          getVersionsFieldBuilder() {
        if (versionsBuilder_ == null) {
          versionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.Version.Builder, akka.cluster.protobuf.msg.ClusterMessages.VectorClock.VersionOrBuilder>(
                  versions_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          versions_ = null;
        }
        return versionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:VectorClock)
    }

    static {
      defaultInstance = new VectorClock(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:VectorClock)
  }

  public interface MetricsGossipEnvelopeOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .Address from = 1;
    /**
     * <code>required .Address from = 1;</code>
     */
    boolean hasFrom();
    /**
     * <code>required .Address from = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.Address getFrom();
    /**
     * <code>required .Address from = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getFromOrBuilder();

    // required .MetricsGossip gossip = 2;
    /**
     * <code>required .MetricsGossip gossip = 2;</code>
     */
    boolean hasGossip();
    /**
     * <code>required .MetricsGossip gossip = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip getGossip();
    /**
     * <code>required .MetricsGossip gossip = 2;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder getGossipOrBuilder();

    // required bool reply = 3;
    /**
     * <code>required bool reply = 3;</code>
     */
    boolean hasReply();
    /**
     * <code>required bool reply = 3;</code>
     */
    boolean getReply();
  }
  /**
   * Protobuf type {@code MetricsGossipEnvelope}
   *
   * <pre>
   **
   * Metrics Gossip Envelope
   * </pre>
   */
  public static final class MetricsGossipEnvelope extends
      com.google.protobuf.GeneratedMessage
      implements MetricsGossipEnvelopeOrBuilder {
    // Use MetricsGossipEnvelope.newBuilder() to construct.
    private MetricsGossipEnvelope(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private MetricsGossipEnvelope(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final MetricsGossipEnvelope defaultInstance;
    public static MetricsGossipEnvelope getDefaultInstance() {
      return defaultInstance;
    }

    public MetricsGossipEnvelope getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private MetricsGossipEnvelope(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              akka.cluster.protobuf.msg.ClusterMessages.Address.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = from_.toBuilder();
              }
              from_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.Address.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(from_);
                from_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = gossip_.toBuilder();
              }
              gossip_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(gossip_);
                gossip_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              reply_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.class, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.Builder.class);
    }

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

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

    private int bitField0_;
    // required .Address from = 1;
    public static final int FROM_FIELD_NUMBER = 1;
    private akka.cluster.protobuf.msg.ClusterMessages.Address from_;
    /**
     * <code>required .Address from = 1;</code>
     */
    public boolean hasFrom() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .Address from = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.Address getFrom() {
      return from_;
    }
    /**
     * <code>required .Address from = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getFromOrBuilder() {
      return from_;
    }

    // required .MetricsGossip gossip = 2;
    public static final int GOSSIP_FIELD_NUMBER = 2;
    private akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip gossip_;
    /**
     * <code>required .MetricsGossip gossip = 2;</code>
     */
    public boolean hasGossip() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .MetricsGossip gossip = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip getGossip() {
      return gossip_;
    }
    /**
     * <code>required .MetricsGossip gossip = 2;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder getGossipOrBuilder() {
      return gossip_;
    }

    // required bool reply = 3;
    public static final int REPLY_FIELD_NUMBER = 3;
    private boolean reply_;
    /**
     * <code>required bool reply = 3;</code>
     */
    public boolean hasReply() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required bool reply = 3;</code>
     */
    public boolean getReply() {
      return reply_;
    }

    private void initFields() {
      from_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
      gossip_ = akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance();
      reply_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasFrom()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasGossip()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasReply()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getFrom().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getGossip().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, from_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, gossip_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, reply_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, from_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, gossip_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, reply_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code MetricsGossipEnvelope}
     *
     * <pre>
     **
     * Metrics Gossip Envelope
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelopeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.class, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getFromFieldBuilder();
          getGossipFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (fromBuilder_ == null) {
          from_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
        } else {
          fromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (gossipBuilder_ == null) {
          gossip_ = akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance();
        } else {
          gossipBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        reply_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope build() {
        akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope result = new akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (fromBuilder_ == null) {
          result.from_ = from_;
        } else {
          result.from_ = fromBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (gossipBuilder_ == null) {
          result.gossip_ = gossip_;
        } else {
          result.gossip_ = gossipBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.reply_ = reply_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.getDefaultInstance()) return this;
        if (other.hasFrom()) {
          mergeFrom(other.getFrom());
        }
        if (other.hasGossip()) {
          mergeGossip(other.getGossip());
        }
        if (other.hasReply()) {
          setReply(other.getReply());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasFrom()) {
          
          return false;
        }
        if (!hasGossip()) {
          
          return false;
        }
        if (!hasReply()) {
          
          return false;
        }
        if (!getFrom().isInitialized()) {
          
          return false;
        }
        if (!getGossip().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .Address from = 1;
      private akka.cluster.protobuf.msg.ClusterMessages.Address from_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> fromBuilder_;
      /**
       * <code>required .Address from = 1;</code>
       */
      public boolean hasFrom() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .Address from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Address getFrom() {
        if (fromBuilder_ == null) {
          return from_;
        } else {
          return fromBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Address from = 1;</code>
       */
      public Builder setFrom(akka.cluster.protobuf.msg.ClusterMessages.Address value) {
        if (fromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          from_ = value;
          onChanged();
        } else {
          fromBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Address from = 1;</code>
       */
      public Builder setFrom(
          akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) {
        if (fromBuilder_ == null) {
          from_ = builderForValue.build();
          onChanged();
        } else {
          fromBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Address from = 1;</code>
       */
      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.Address value) {
        if (fromBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              from_ != akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance()) {
            from_ =
              akka.cluster.protobuf.msg.ClusterMessages.Address.newBuilder(from_).mergeFrom(value).buildPartial();
          } else {
            from_ = value;
          }
          onChanged();
        } else {
          fromBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Address from = 1;</code>
       */
      public Builder clearFrom() {
        if (fromBuilder_ == null) {
          from_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
          onChanged();
        } else {
          fromBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Address from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder getFromBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFromFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Address from = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getFromOrBuilder() {
        if (fromBuilder_ != null) {
          return fromBuilder_.getMessageOrBuilder();
        } else {
          return from_;
        }
      }
      /**
       * <code>required .Address from = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> 
          getFromFieldBuilder() {
        if (fromBuilder_ == null) {
          fromBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder>(
                  from_,
                  getParentForChildren(),
                  isClean());
          from_ = null;
        }
        return fromBuilder_;
      }

      // required .MetricsGossip gossip = 2;
      private akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip gossip_ = akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder> gossipBuilder_;
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      public boolean hasGossip() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip getGossip() {
        if (gossipBuilder_ == null) {
          return gossip_;
        } else {
          return gossipBuilder_.getMessage();
        }
      }
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      public Builder setGossip(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip value) {
        if (gossipBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gossip_ = value;
          onChanged();
        } else {
          gossipBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      public Builder setGossip(
          akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder builderForValue) {
        if (gossipBuilder_ == null) {
          gossip_ = builderForValue.build();
          onChanged();
        } else {
          gossipBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      public Builder mergeGossip(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip value) {
        if (gossipBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              gossip_ != akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance()) {
            gossip_ =
              akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.newBuilder(gossip_).mergeFrom(value).buildPartial();
          } else {
            gossip_ = value;
          }
          onChanged();
        } else {
          gossipBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      public Builder clearGossip() {
        if (gossipBuilder_ == null) {
          gossip_ = akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance();
          onChanged();
        } else {
          gossipBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder getGossipBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getGossipFieldBuilder().getBuilder();
      }
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder getGossipOrBuilder() {
        if (gossipBuilder_ != null) {
          return gossipBuilder_.getMessageOrBuilder();
        } else {
          return gossip_;
        }
      }
      /**
       * <code>required .MetricsGossip gossip = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder> 
          getGossipFieldBuilder() {
        if (gossipBuilder_ == null) {
          gossipBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder>(
                  gossip_,
                  getParentForChildren(),
                  isClean());
          gossip_ = null;
        }
        return gossipBuilder_;
      }

      // required bool reply = 3;
      private boolean reply_ ;
      /**
       * <code>required bool reply = 3;</code>
       */
      public boolean hasReply() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required bool reply = 3;</code>
       */
      public boolean getReply() {
        return reply_;
      }
      /**
       * <code>required bool reply = 3;</code>
       */
      public Builder setReply(boolean value) {
        bitField0_ |= 0x00000004;
        reply_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool reply = 3;</code>
       */
      public Builder clearReply() {
        bitField0_ = (bitField0_ & ~0x00000004);
        reply_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:MetricsGossipEnvelope)
    }

    static {
      defaultInstance = new MetricsGossipEnvelope(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:MetricsGossipEnvelope)
  }

  public interface MetricsGossipOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .Address allAddresses = 1;
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Address> 
        getAllAddressesList();
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.Address getAllAddresses(int index);
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    int getAllAddressesCount();
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> 
        getAllAddressesOrBuilderList();
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAllAddressesOrBuilder(
        int index);

    // repeated string allMetricNames = 2;
    /**
     * <code>repeated string allMetricNames = 2;</code>
     */
    java.util.List<java.lang.String>
    getAllMetricNamesList();
    /**
     * <code>repeated string allMetricNames = 2;</code>
     */
    int getAllMetricNamesCount();
    /**
     * <code>repeated string allMetricNames = 2;</code>
     */
    java.lang.String getAllMetricNames(int index);
    /**
     * <code>repeated string allMetricNames = 2;</code>
     */
    com.google.protobuf.ByteString
        getAllMetricNamesBytes(int index);

    // repeated .NodeMetrics nodeMetrics = 3;
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics> 
        getNodeMetricsList();
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics getNodeMetrics(int index);
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    int getNodeMetricsCount();
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder> 
        getNodeMetricsOrBuilderList();
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder getNodeMetricsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code MetricsGossip}
   *
   * <pre>
   **
   * Metrics Gossip
   * </pre>
   */
  public static final class MetricsGossip extends
      com.google.protobuf.GeneratedMessage
      implements MetricsGossipOrBuilder {
    // Use MetricsGossip.newBuilder() to construct.
    private MetricsGossip(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private MetricsGossip(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final MetricsGossip defaultInstance;
    public static MetricsGossip getDefaultInstance() {
      return defaultInstance;
    }

    public MetricsGossip getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private MetricsGossip(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                allAddresses_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.Address>();
                mutable_bitField0_ |= 0x00000001;
              }
              allAddresses_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.Address.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                allMetricNames_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              allMetricNames_.add(input.readBytes());
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                nodeMetrics_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics>();
                mutable_bitField0_ |= 0x00000004;
              }
              nodeMetrics_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          allAddresses_ = java.util.Collections.unmodifiableList(allAddresses_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          allMetricNames_ = new com.google.protobuf.UnmodifiableLazyStringList(allMetricNames_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          nodeMetrics_ = java.util.Collections.unmodifiableList(nodeMetrics_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.class, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder.class);
    }

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

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

    // repeated .Address allAddresses = 1;
    public static final int ALLADDRESSES_FIELD_NUMBER = 1;
    private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Address> allAddresses_;
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Address> getAllAddressesList() {
      return allAddresses_;
    }
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> 
        getAllAddressesOrBuilderList() {
      return allAddresses_;
    }
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    public int getAllAddressesCount() {
      return allAddresses_.size();
    }
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.Address getAllAddresses(int index) {
      return allAddresses_.get(index);
    }
    /**
     * <code>repeated .Address allAddresses = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAllAddressesOrBuilder(
        int index) {
      return allAddresses_.get(index);
    }

    // repeated string allMetricNames = 2;
    public static final int ALLMETRICNAMES_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList allMetricNames_;
    /**
     * <code>repeated string allMetricNames = 2;</code>
     */
    public java.util.List<java.lang.String>
        getAllMetricNamesList() {
      return allMetricNames_;
    }
    /**
     * <code>repeated string allMetricNames = 2;</code>
     */
    public int getAllMetricNamesCount() {
      return allMetricNames_.size();
    }
    /**
     * <code>repeated string allMetricNames = 2;</code>
     */
    public java.lang.String getAllMetricNames(int index) {
      return allMetricNames_.get(index);
    }
    /**
     * <code>repeated string allMetricNames = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAllMetricNamesBytes(int index) {
      return allMetricNames_.getByteString(index);
    }

    // repeated .NodeMetrics nodeMetrics = 3;
    public static final int NODEMETRICS_FIELD_NUMBER = 3;
    private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics> nodeMetrics_;
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics> getNodeMetricsList() {
      return nodeMetrics_;
    }
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder> 
        getNodeMetricsOrBuilderList() {
      return nodeMetrics_;
    }
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    public int getNodeMetricsCount() {
      return nodeMetrics_.size();
    }
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics getNodeMetrics(int index) {
      return nodeMetrics_.get(index);
    }
    /**
     * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder getNodeMetricsOrBuilder(
        int index) {
      return nodeMetrics_.get(index);
    }

    private void initFields() {
      allAddresses_ = java.util.Collections.emptyList();
      allMetricNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      nodeMetrics_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      for (int i = 0; i < getAllAddressesCount(); i++) {
        if (!getAllAddresses(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getNodeMetricsCount(); i++) {
        if (!getNodeMetrics(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < allAddresses_.size(); i++) {
        output.writeMessage(1, allAddresses_.get(i));
      }
      for (int i = 0; i < allMetricNames_.size(); i++) {
        output.writeBytes(2, allMetricNames_.getByteString(i));
      }
      for (int i = 0; i < nodeMetrics_.size(); i++) {
        output.writeMessage(3, nodeMetrics_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < allAddresses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, allAddresses_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < allMetricNames_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(allMetricNames_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getAllMetricNamesList().size();
      }
      for (int i = 0; i < nodeMetrics_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, nodeMetrics_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code MetricsGossip}
     *
     * <pre>
     **
     * Metrics Gossip
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.class, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAllAddressesFieldBuilder();
          getNodeMetricsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (allAddressesBuilder_ == null) {
          allAddresses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          allAddressesBuilder_.clear();
        }
        allMetricNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (nodeMetricsBuilder_ == null) {
          nodeMetrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          nodeMetricsBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip build() {
        akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip result = new akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip(this);
        int from_bitField0_ = bitField0_;
        if (allAddressesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            allAddresses_ = java.util.Collections.unmodifiableList(allAddresses_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.allAddresses_ = allAddresses_;
        } else {
          result.allAddresses_ = allAddressesBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          allMetricNames_ = new com.google.protobuf.UnmodifiableLazyStringList(
              allMetricNames_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.allMetricNames_ = allMetricNames_;
        if (nodeMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            nodeMetrics_ = java.util.Collections.unmodifiableList(nodeMetrics_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.nodeMetrics_ = nodeMetrics_;
        } else {
          result.nodeMetrics_ = nodeMetricsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance()) return this;
        if (allAddressesBuilder_ == null) {
          if (!other.allAddresses_.isEmpty()) {
            if (allAddresses_.isEmpty()) {
              allAddresses_ = other.allAddresses_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAllAddressesIsMutable();
              allAddresses_.addAll(other.allAddresses_);
            }
            onChanged();
          }
        } else {
          if (!other.allAddresses_.isEmpty()) {
            if (allAddressesBuilder_.isEmpty()) {
              allAddressesBuilder_.dispose();
              allAddressesBuilder_ = null;
              allAddresses_ = other.allAddresses_;
              bitField0_ = (bitField0_ & ~0x00000001);
              allAddressesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAllAddressesFieldBuilder() : null;
            } else {
              allAddressesBuilder_.addAllMessages(other.allAddresses_);
            }
          }
        }
        if (!other.allMetricNames_.isEmpty()) {
          if (allMetricNames_.isEmpty()) {
            allMetricNames_ = other.allMetricNames_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureAllMetricNamesIsMutable();
            allMetricNames_.addAll(other.allMetricNames_);
          }
          onChanged();
        }
        if (nodeMetricsBuilder_ == null) {
          if (!other.nodeMetrics_.isEmpty()) {
            if (nodeMetrics_.isEmpty()) {
              nodeMetrics_ = other.nodeMetrics_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureNodeMetricsIsMutable();
              nodeMetrics_.addAll(other.nodeMetrics_);
            }
            onChanged();
          }
        } else {
          if (!other.nodeMetrics_.isEmpty()) {
            if (nodeMetricsBuilder_.isEmpty()) {
              nodeMetricsBuilder_.dispose();
              nodeMetricsBuilder_ = null;
              nodeMetrics_ = other.nodeMetrics_;
              bitField0_ = (bitField0_ & ~0x00000004);
              nodeMetricsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getNodeMetricsFieldBuilder() : null;
            } else {
              nodeMetricsBuilder_.addAllMessages(other.nodeMetrics_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getAllAddressesCount(); i++) {
          if (!getAllAddresses(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getNodeMetricsCount(); i++) {
          if (!getNodeMetrics(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .Address allAddresses = 1;
      private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Address> allAddresses_ =
        java.util.Collections.emptyList();
      private void ensureAllAddressesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          allAddresses_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.Address>(allAddresses_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> allAddressesBuilder_;

      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Address> getAllAddressesList() {
        if (allAddressesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(allAddresses_);
        } else {
          return allAddressesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public int getAllAddressesCount() {
        if (allAddressesBuilder_ == null) {
          return allAddresses_.size();
        } else {
          return allAddressesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Address getAllAddresses(int index) {
        if (allAddressesBuilder_ == null) {
          return allAddresses_.get(index);
        } else {
          return allAddressesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder setAllAddresses(
          int index, akka.cluster.protobuf.msg.ClusterMessages.Address value) {
        if (allAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAddressesIsMutable();
          allAddresses_.set(index, value);
          onChanged();
        } else {
          allAddressesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder setAllAddresses(
          int index, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          allAddresses_.set(index, builderForValue.build());
          onChanged();
        } else {
          allAddressesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder addAllAddresses(akka.cluster.protobuf.msg.ClusterMessages.Address value) {
        if (allAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAddressesIsMutable();
          allAddresses_.add(value);
          onChanged();
        } else {
          allAddressesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder addAllAddresses(
          int index, akka.cluster.protobuf.msg.ClusterMessages.Address value) {
        if (allAddressesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAddressesIsMutable();
          allAddresses_.add(index, value);
          onChanged();
        } else {
          allAddressesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder addAllAddresses(
          akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          allAddresses_.add(builderForValue.build());
          onChanged();
        } else {
          allAddressesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder addAllAddresses(
          int index, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          allAddresses_.add(index, builderForValue.build());
          onChanged();
        } else {
          allAddressesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder addAllAllAddresses(
          java.lang.Iterable<? extends akka.cluster.protobuf.msg.ClusterMessages.Address> values) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          super.addAll(values, allAddresses_);
          onChanged();
        } else {
          allAddressesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder clearAllAddresses() {
        if (allAddressesBuilder_ == null) {
          allAddresses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          allAddressesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public Builder removeAllAddresses(int index) {
        if (allAddressesBuilder_ == null) {
          ensureAllAddressesIsMutable();
          allAddresses_.remove(index);
          onChanged();
        } else {
          allAddressesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder getAllAddressesBuilder(
          int index) {
        return getAllAddressesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAllAddressesOrBuilder(
          int index) {
        if (allAddressesBuilder_ == null) {
          return allAddresses_.get(index);  } else {
          return allAddressesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> 
           getAllAddressesOrBuilderList() {
        if (allAddressesBuilder_ != null) {
          return allAddressesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(allAddresses_);
        }
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder addAllAddressesBuilder() {
        return getAllAddressesFieldBuilder().addBuilder(
            akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance());
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder addAllAddressesBuilder(
          int index) {
        return getAllAddressesFieldBuilder().addBuilder(
            index, akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance());
      }
      /**
       * <code>repeated .Address allAddresses = 1;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.Address.Builder> 
           getAllAddressesBuilderList() {
        return getAllAddressesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> 
          getAllAddressesFieldBuilder() {
        if (allAddressesBuilder_ == null) {
          allAddressesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder>(
                  allAddresses_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          allAddresses_ = null;
        }
        return allAddressesBuilder_;
      }

      // repeated string allMetricNames = 2;
      private com.google.protobuf.LazyStringList allMetricNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAllMetricNamesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          allMetricNames_ = new com.google.protobuf.LazyStringArrayList(allMetricNames_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public java.util.List<java.lang.String>
          getAllMetricNamesList() {
        return java.util.Collections.unmodifiableList(allMetricNames_);
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public int getAllMetricNamesCount() {
        return allMetricNames_.size();
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public java.lang.String getAllMetricNames(int index) {
        return allMetricNames_.get(index);
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAllMetricNamesBytes(int index) {
        return allMetricNames_.getByteString(index);
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public Builder setAllMetricNames(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllMetricNamesIsMutable();
        allMetricNames_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public Builder addAllMetricNames(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllMetricNamesIsMutable();
        allMetricNames_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public Builder addAllAllMetricNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureAllMetricNamesIsMutable();
        super.addAll(values, allMetricNames_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public Builder clearAllMetricNames() {
        allMetricNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string allMetricNames = 2;</code>
       */
      public Builder addAllMetricNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllMetricNamesIsMutable();
        allMetricNames_.add(value);
        onChanged();
        return this;
      }

      // repeated .NodeMetrics nodeMetrics = 3;
      private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics> nodeMetrics_ =
        java.util.Collections.emptyList();
      private void ensureNodeMetricsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          nodeMetrics_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics>(nodeMetrics_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder> nodeMetricsBuilder_;

      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics> getNodeMetricsList() {
        if (nodeMetricsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nodeMetrics_);
        } else {
          return nodeMetricsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public int getNodeMetricsCount() {
        if (nodeMetricsBuilder_ == null) {
          return nodeMetrics_.size();
        } else {
          return nodeMetricsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics getNodeMetrics(int index) {
        if (nodeMetricsBuilder_ == null) {
          return nodeMetrics_.get(index);
        } else {
          return nodeMetricsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder setNodeMetrics(
          int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics value) {
        if (nodeMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeMetricsIsMutable();
          nodeMetrics_.set(index, value);
          onChanged();
        } else {
          nodeMetricsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder setNodeMetrics(
          int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder builderForValue) {
        if (nodeMetricsBuilder_ == null) {
          ensureNodeMetricsIsMutable();
          nodeMetrics_.set(index, builderForValue.build());
          onChanged();
        } else {
          nodeMetricsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder addNodeMetrics(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics value) {
        if (nodeMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeMetricsIsMutable();
          nodeMetrics_.add(value);
          onChanged();
        } else {
          nodeMetricsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder addNodeMetrics(
          int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics value) {
        if (nodeMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodeMetricsIsMutable();
          nodeMetrics_.add(index, value);
          onChanged();
        } else {
          nodeMetricsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder addNodeMetrics(
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder builderForValue) {
        if (nodeMetricsBuilder_ == null) {
          ensureNodeMetricsIsMutable();
          nodeMetrics_.add(builderForValue.build());
          onChanged();
        } else {
          nodeMetricsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder addNodeMetrics(
          int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder builderForValue) {
        if (nodeMetricsBuilder_ == null) {
          ensureNodeMetricsIsMutable();
          nodeMetrics_.add(index, builderForValue.build());
          onChanged();
        } else {
          nodeMetricsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder addAllNodeMetrics(
          java.lang.Iterable<? extends akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics> values) {
        if (nodeMetricsBuilder_ == null) {
          ensureNodeMetricsIsMutable();
          super.addAll(values, nodeMetrics_);
          onChanged();
        } else {
          nodeMetricsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder clearNodeMetrics() {
        if (nodeMetricsBuilder_ == null) {
          nodeMetrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          nodeMetricsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public Builder removeNodeMetrics(int index) {
        if (nodeMetricsBuilder_ == null) {
          ensureNodeMetricsIsMutable();
          nodeMetrics_.remove(index);
          onChanged();
        } else {
          nodeMetricsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder getNodeMetricsBuilder(
          int index) {
        return getNodeMetricsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder getNodeMetricsOrBuilder(
          int index) {
        if (nodeMetricsBuilder_ == null) {
          return nodeMetrics_.get(index);  } else {
          return nodeMetricsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder> 
           getNodeMetricsOrBuilderList() {
        if (nodeMetricsBuilder_ != null) {
          return nodeMetricsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nodeMetrics_);
        }
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder addNodeMetricsBuilder() {
        return getNodeMetricsFieldBuilder().addBuilder(
            akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDefaultInstance());
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder addNodeMetricsBuilder(
          int index) {
        return getNodeMetricsFieldBuilder().addBuilder(
            index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDefaultInstance());
      }
      /**
       * <code>repeated .NodeMetrics nodeMetrics = 3;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder> 
           getNodeMetricsBuilderList() {
        return getNodeMetricsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder> 
          getNodeMetricsFieldBuilder() {
        if (nodeMetricsBuilder_ == null) {
          nodeMetricsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder>(
                  nodeMetrics_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          nodeMetrics_ = null;
        }
        return nodeMetricsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:MetricsGossip)
    }

    static {
      defaultInstance = new MetricsGossip(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:MetricsGossip)
  }

  public interface NodeMetricsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required int32 addressIndex = 1;
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    boolean hasAddressIndex();
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    int getAddressIndex();

    // required int64 timestamp = 2;
    /**
     * <code>required int64 timestamp = 2;</code>
     */
    boolean hasTimestamp();
    /**
     * <code>required int64 timestamp = 2;</code>
     */
    long getTimestamp();

    // repeated .NodeMetrics.Metric metrics = 3;
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric> 
        getMetricsList();
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric getMetrics(int index);
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    int getMetricsCount();
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder> 
        getMetricsOrBuilderList();
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder getMetricsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code NodeMetrics}
   *
   * <pre>
   **
   * Node Metrics
   * </pre>
   */
  public static final class NodeMetrics extends
      com.google.protobuf.GeneratedMessage
      implements NodeMetricsOrBuilder {
    // Use NodeMetrics.newBuilder() to construct.
    private NodeMetrics(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NodeMetrics(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final NodeMetrics defaultInstance;
    public static NodeMetrics getDefaultInstance() {
      return defaultInstance;
    }

    public NodeMetrics getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private NodeMetrics(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              addressIndex_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              timestamp_ = input.readInt64();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                metrics_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric>();
                mutable_bitField0_ |= 0x00000004;
              }
              metrics_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          metrics_ = java.util.Collections.unmodifiableList(metrics_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder.class);
    }

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

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

    /**
     * Protobuf enum {@code NodeMetrics.NumberType}
     */
    public enum NumberType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>Serialized = 0;</code>
       */
      Serialized(0, 0),
      /**
       * <code>Double = 1;</code>
       */
      Double(1, 1),
      /**
       * <code>Float = 2;</code>
       */
      Float(2, 2),
      /**
       * <code>Integer = 3;</code>
       */
      Integer(3, 3),
      /**
       * <code>Long = 4;</code>
       */
      Long(4, 4),
      ;

      /**
       * <code>Serialized = 0;</code>
       */
      public static final int Serialized_VALUE = 0;
      /**
       * <code>Double = 1;</code>
       */
      public static final int Double_VALUE = 1;
      /**
       * <code>Float = 2;</code>
       */
      public static final int Float_VALUE = 2;
      /**
       * <code>Integer = 3;</code>
       */
      public static final int Integer_VALUE = 3;
      /**
       * <code>Long = 4;</code>
       */
      public static final int Long_VALUE = 4;


      public final int getNumber() { return value; }

      public static NumberType valueOf(int value) {
        switch (value) {
          case 0: return Serialized;
          case 1: return Double;
          case 2: return Float;
          case 3: return Integer;
          case 4: return Long;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int index;
      private final int value;

      private NumberType(int index, int value) {
        this.index = index;
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:NodeMetrics.NumberType)
    }

    public interface NumberOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // required .NodeMetrics.NumberType type = 1;
      /**
       * <code>required .NodeMetrics.NumberType type = 1;</code>
       */
      boolean hasType();
      /**
       * <code>required .NodeMetrics.NumberType type = 1;</code>
       */
      akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType getType();

      // optional uint32 value32 = 2;
      /**
       * <code>optional uint32 value32 = 2;</code>
       */
      boolean hasValue32();
      /**
       * <code>optional uint32 value32 = 2;</code>
       */
      int getValue32();

      // optional uint64 value64 = 3;
      /**
       * <code>optional uint64 value64 = 3;</code>
       */
      boolean hasValue64();
      /**
       * <code>optional uint64 value64 = 3;</code>
       */
      long getValue64();

      // optional bytes serialized = 4;
      /**
       * <code>optional bytes serialized = 4;</code>
       */
      boolean hasSerialized();
      /**
       * <code>optional bytes serialized = 4;</code>
       */
      com.google.protobuf.ByteString getSerialized();
    }
    /**
     * Protobuf type {@code NodeMetrics.Number}
     */
    public static final class Number extends
        com.google.protobuf.GeneratedMessage
        implements NumberOrBuilder {
      // Use Number.newBuilder() to construct.
      private Number(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Number(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final Number defaultInstance;
      public static Number getDefaultInstance() {
        return defaultInstance;
      }

      public Number getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Number(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        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 (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType value = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  type_ = value;
                }
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                value32_ = input.readUInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                value64_ = input.readUInt64();
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                serialized_ = input.readBytes();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder.class);
      }

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

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

      private int bitField0_;
      // required .NodeMetrics.NumberType type = 1;
      public static final int TYPE_FIELD_NUMBER = 1;
      private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType type_;
      /**
       * <code>required .NodeMetrics.NumberType type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .NodeMetrics.NumberType type = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType getType() {
        return type_;
      }

      // optional uint32 value32 = 2;
      public static final int VALUE32_FIELD_NUMBER = 2;
      private int value32_;
      /**
       * <code>optional uint32 value32 = 2;</code>
       */
      public boolean hasValue32() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 value32 = 2;</code>
       */
      public int getValue32() {
        return value32_;
      }

      // optional uint64 value64 = 3;
      public static final int VALUE64_FIELD_NUMBER = 3;
      private long value64_;
      /**
       * <code>optional uint64 value64 = 3;</code>
       */
      public boolean hasValue64() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional uint64 value64 = 3;</code>
       */
      public long getValue64() {
        return value64_;
      }

      // optional bytes serialized = 4;
      public static final int SERIALIZED_FIELD_NUMBER = 4;
      private com.google.protobuf.ByteString serialized_;
      /**
       * <code>optional bytes serialized = 4;</code>
       */
      public boolean hasSerialized() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bytes serialized = 4;</code>
       */
      public com.google.protobuf.ByteString getSerialized() {
        return serialized_;
      }

      private void initFields() {
        type_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.Serialized;
        value32_ = 0;
        value64_ = 0L;
        serialized_ = com.google.protobuf.ByteString.EMPTY;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (!hasType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, type_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, value32_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt64(3, value64_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(4, serialized_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, type_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, value32_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(3, value64_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, serialized_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code NodeMetrics.Number}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder.class);
        }

        // Construct using akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          type_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.Serialized;
          bitField0_ = (bitField0_ & ~0x00000001);
          value32_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          value64_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000004);
          serialized_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_descriptor;
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number getDefaultInstanceForType() {
          return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance();
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number build() {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number buildPartial() {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number result = new akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.value32_ = value32_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.value64_ = value64_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.serialized_ = serialized_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number) {
            return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number other) {
          if (other == akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance()) return this;
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasValue32()) {
            setValue32(other.getValue32());
          }
          if (other.hasValue64()) {
            setValue64(other.getValue64());
          }
          if (other.hasSerialized()) {
            setSerialized(other.getSerialized());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          if (!hasType()) {
            
            return false;
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // required .NodeMetrics.NumberType type = 1;
        private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType type_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.Serialized;
        /**
         * <code>required .NodeMetrics.NumberType type = 1;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required .NodeMetrics.NumberType type = 1;</code>
         */
        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType getType() {
          return type_;
        }
        /**
         * <code>required .NodeMetrics.NumberType type = 1;</code>
         */
        public Builder setType(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required .NodeMetrics.NumberType type = 1;</code>
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.Serialized;
          onChanged();
          return this;
        }

        // optional uint32 value32 = 2;
        private int value32_ ;
        /**
         * <code>optional uint32 value32 = 2;</code>
         */
        public boolean hasValue32() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 value32 = 2;</code>
         */
        public int getValue32() {
          return value32_;
        }
        /**
         * <code>optional uint32 value32 = 2;</code>
         */
        public Builder setValue32(int value) {
          bitField0_ |= 0x00000002;
          value32_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 value32 = 2;</code>
         */
        public Builder clearValue32() {
          bitField0_ = (bitField0_ & ~0x00000002);
          value32_ = 0;
          onChanged();
          return this;
        }

        // optional uint64 value64 = 3;
        private long value64_ ;
        /**
         * <code>optional uint64 value64 = 3;</code>
         */
        public boolean hasValue64() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional uint64 value64 = 3;</code>
         */
        public long getValue64() {
          return value64_;
        }
        /**
         * <code>optional uint64 value64 = 3;</code>
         */
        public Builder setValue64(long value) {
          bitField0_ |= 0x00000004;
          value64_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint64 value64 = 3;</code>
         */
        public Builder clearValue64() {
          bitField0_ = (bitField0_ & ~0x00000004);
          value64_ = 0L;
          onChanged();
          return this;
        }

        // optional bytes serialized = 4;
        private com.google.protobuf.ByteString serialized_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes serialized = 4;</code>
         */
        public boolean hasSerialized() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional bytes serialized = 4;</code>
         */
        public com.google.protobuf.ByteString getSerialized() {
          return serialized_;
        }
        /**
         * <code>optional bytes serialized = 4;</code>
         */
        public Builder setSerialized(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          serialized_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes serialized = 4;</code>
         */
        public Builder clearSerialized() {
          bitField0_ = (bitField0_ & ~0x00000008);
          serialized_ = getDefaultInstance().getSerialized();
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:NodeMetrics.Number)
      }

      static {
        defaultInstance = new Number(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:NodeMetrics.Number)
    }

    public interface EWMAOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // required double value = 1;
      /**
       * <code>required double value = 1;</code>
       */
      boolean hasValue();
      /**
       * <code>required double value = 1;</code>
       */
      double getValue();

      // required double alpha = 2;
      /**
       * <code>required double alpha = 2;</code>
       */
      boolean hasAlpha();
      /**
       * <code>required double alpha = 2;</code>
       */
      double getAlpha();
    }
    /**
     * Protobuf type {@code NodeMetrics.EWMA}
     */
    public static final class EWMA extends
        com.google.protobuf.GeneratedMessage
        implements EWMAOrBuilder {
      // Use EWMA.newBuilder() to construct.
      private EWMA(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private EWMA(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final EWMA defaultInstance;
      public static EWMA getDefaultInstance() {
        return defaultInstance;
      }

      public EWMA getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private EWMA(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        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 (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 9: {
                bitField0_ |= 0x00000001;
                value_ = input.readDouble();
                break;
              }
              case 17: {
                bitField0_ |= 0x00000002;
                alpha_ = input.readDouble();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder.class);
      }

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

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

      private int bitField0_;
      // required double value = 1;
      public static final int VALUE_FIELD_NUMBER = 1;
      private double value_;
      /**
       * <code>required double value = 1;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required double value = 1;</code>
       */
      public double getValue() {
        return value_;
      }

      // required double alpha = 2;
      public static final int ALPHA_FIELD_NUMBER = 2;
      private double alpha_;
      /**
       * <code>required double alpha = 2;</code>
       */
      public boolean hasAlpha() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required double alpha = 2;</code>
       */
      public double getAlpha() {
        return alpha_;
      }

      private void initFields() {
        value_ = 0D;
        alpha_ = 0D;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (!hasValue()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasAlpha()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeDouble(1, value_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeDouble(2, alpha_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(1, value_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeDoubleSize(2, alpha_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code NodeMetrics.EWMA}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder.class);
        }

        // Construct using akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          value_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000001);
          alpha_ = 0D;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_descriptor;
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA getDefaultInstanceForType() {
          return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance();
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA build() {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA buildPartial() {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA result = new akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.value_ = value_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.alpha_ = alpha_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA) {
            return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA other) {
          if (other == akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance()) return this;
          if (other.hasValue()) {
            setValue(other.getValue());
          }
          if (other.hasAlpha()) {
            setAlpha(other.getAlpha());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          if (!hasValue()) {
            
            return false;
          }
          if (!hasAlpha()) {
            
            return false;
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // required double value = 1;
        private double value_ ;
        /**
         * <code>required double value = 1;</code>
         */
        public boolean hasValue() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required double value = 1;</code>
         */
        public double getValue() {
          return value_;
        }
        /**
         * <code>required double value = 1;</code>
         */
        public Builder setValue(double value) {
          bitField0_ |= 0x00000001;
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required double value = 1;</code>
         */
        public Builder clearValue() {
          bitField0_ = (bitField0_ & ~0x00000001);
          value_ = 0D;
          onChanged();
          return this;
        }

        // required double alpha = 2;
        private double alpha_ ;
        /**
         * <code>required double alpha = 2;</code>
         */
        public boolean hasAlpha() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required double alpha = 2;</code>
         */
        public double getAlpha() {
          return alpha_;
        }
        /**
         * <code>required double alpha = 2;</code>
         */
        public Builder setAlpha(double value) {
          bitField0_ |= 0x00000002;
          alpha_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required double alpha = 2;</code>
         */
        public Builder clearAlpha() {
          bitField0_ = (bitField0_ & ~0x00000002);
          alpha_ = 0D;
          onChanged();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:NodeMetrics.EWMA)
      }

      static {
        defaultInstance = new EWMA(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:NodeMetrics.EWMA)
    }

    public interface MetricOrBuilder
        extends com.google.protobuf.MessageOrBuilder {

      // required int32 nameIndex = 1;
      /**
       * <code>required int32 nameIndex = 1;</code>
       */
      boolean hasNameIndex();
      /**
       * <code>required int32 nameIndex = 1;</code>
       */
      int getNameIndex();

      // required .NodeMetrics.Number number = 2;
      /**
       * <code>required .NodeMetrics.Number number = 2;</code>
       */
      boolean hasNumber();
      /**
       * <code>required .NodeMetrics.Number number = 2;</code>
       */
      akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number getNumber();
      /**
       * <code>required .NodeMetrics.Number number = 2;</code>
       */
      akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder getNumberOrBuilder();

      // optional .NodeMetrics.EWMA ewma = 3;
      /**
       * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
       */
      boolean hasEwma();
      /**
       * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
       */
      akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA getEwma();
      /**
       * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
       */
      akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder getEwmaOrBuilder();
    }
    /**
     * Protobuf type {@code NodeMetrics.Metric}
     */
    public static final class Metric extends
        com.google.protobuf.GeneratedMessage
        implements MetricOrBuilder {
      // Use Metric.newBuilder() to construct.
      private Metric(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
        super(builder);
        this.unknownFields = builder.getUnknownFields();
      }
      private Metric(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

      private static final Metric defaultInstance;
      public static Metric getDefaultInstance() {
        return defaultInstance;
      }

      public Metric getDefaultInstanceForType() {
        return defaultInstance;
      }

      private final com.google.protobuf.UnknownFieldSet unknownFields;
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
          getUnknownFields() {
        return this.unknownFields;
      }
      private Metric(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        initFields();
        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 (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                nameIndex_ = input.readInt32();
                break;
              }
              case 18: {
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) == 0x00000002)) {
                  subBuilder = number_.toBuilder();
                }
                number_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(number_);
                  number_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              case 26: {
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  subBuilder = ewma_.toBuilder();
                }
                ewma_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(ewma_);
                  ewma_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e.getMessage()).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder.class);
      }

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

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

      private int bitField0_;
      // required int32 nameIndex = 1;
      public static final int NAMEINDEX_FIELD_NUMBER = 1;
      private int nameIndex_;
      /**
       * <code>required int32 nameIndex = 1;</code>
       */
      public boolean hasNameIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 nameIndex = 1;</code>
       */
      public int getNameIndex() {
        return nameIndex_;
      }

      // required .NodeMetrics.Number number = 2;
      public static final int NUMBER_FIELD_NUMBER = 2;
      private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number number_;
      /**
       * <code>required .NodeMetrics.Number number = 2;</code>
       */
      public boolean hasNumber() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .NodeMetrics.Number number = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number getNumber() {
        return number_;
      }
      /**
       * <code>required .NodeMetrics.Number number = 2;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder getNumberOrBuilder() {
        return number_;
      }

      // optional .NodeMetrics.EWMA ewma = 3;
      public static final int EWMA_FIELD_NUMBER = 3;
      private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA ewma_;
      /**
       * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
       */
      public boolean hasEwma() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA getEwma() {
        return ewma_;
      }
      /**
       * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder getEwmaOrBuilder() {
        return ewma_;
      }

      private void initFields() {
        nameIndex_ = 0;
        number_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance();
        ewma_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;

        if (!hasNameIndex()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasNumber()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getNumber().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasEwma()) {
          if (!getEwma().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, nameIndex_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, number_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(3, ewma_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, nameIndex_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, number_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, ewma_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }

      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseDelimitedFrom(input, extensionRegistry);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return PARSER.parseFrom(input);
      }
      public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return PARSER.parseFrom(input, extensionRegistry);
      }

      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code NodeMetrics.Metric}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_descriptor;
        }

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder.class);
        }

        // Construct using akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessage.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getNumberFieldBuilder();
            getEwmaFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }

        public Builder clear() {
          super.clear();
          nameIndex_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (numberBuilder_ == null) {
            number_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance();
          } else {
            numberBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (ewmaBuilder_ == null) {
            ewma_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance();
          } else {
            ewmaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_descriptor;
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric getDefaultInstanceForType() {
          return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.getDefaultInstance();
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric build() {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric buildPartial() {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric result = new akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.nameIndex_ = nameIndex_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (numberBuilder_ == null) {
            result.number_ = number_;
          } else {
            result.number_ = numberBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (ewmaBuilder_ == null) {
            result.ewma_ = ewma_;
          } else {
            result.ewma_ = ewmaBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric) {
            return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric other) {
          if (other == akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.getDefaultInstance()) return this;
          if (other.hasNameIndex()) {
            setNameIndex(other.getNameIndex());
          }
          if (other.hasNumber()) {
            mergeNumber(other.getNumber());
          }
          if (other.hasEwma()) {
            mergeEwma(other.getEwma());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }

        public final boolean isInitialized() {
          if (!hasNameIndex()) {
            
            return false;
          }
          if (!hasNumber()) {
            
            return false;
          }
          if (!getNumber().isInitialized()) {
            
            return false;
          }
          if (hasEwma()) {
            if (!getEwma().isInitialized()) {
              
              return false;
            }
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric) e.getUnfinishedMessage();
            throw e;
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        // required int32 nameIndex = 1;
        private int nameIndex_ ;
        /**
         * <code>required int32 nameIndex = 1;</code>
         */
        public boolean hasNameIndex() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 nameIndex = 1;</code>
         */
        public int getNameIndex() {
          return nameIndex_;
        }
        /**
         * <code>required int32 nameIndex = 1;</code>
         */
        public Builder setNameIndex(int value) {
          bitField0_ |= 0x00000001;
          nameIndex_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 nameIndex = 1;</code>
         */
        public Builder clearNameIndex() {
          bitField0_ = (bitField0_ & ~0x00000001);
          nameIndex_ = 0;
          onChanged();
          return this;
        }

        // required .NodeMetrics.Number number = 2;
        private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number number_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder> numberBuilder_;
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        public boolean hasNumber() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number getNumber() {
          if (numberBuilder_ == null) {
            return number_;
          } else {
            return numberBuilder_.getMessage();
          }
        }
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        public Builder setNumber(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number value) {
          if (numberBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            number_ = value;
            onChanged();
          } else {
            numberBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        public Builder setNumber(
            akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder builderForValue) {
          if (numberBuilder_ == null) {
            number_ = builderForValue.build();
            onChanged();
          } else {
            numberBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        public Builder mergeNumber(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number value) {
          if (numberBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                number_ != akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance()) {
              number_ =
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.newBuilder(number_).mergeFrom(value).buildPartial();
            } else {
              number_ = value;
            }
            onChanged();
          } else {
            numberBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        public Builder clearNumber() {
          if (numberBuilder_ == null) {
            number_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance();
            onChanged();
          } else {
            numberBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder getNumberBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getNumberFieldBuilder().getBuilder();
        }
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder getNumberOrBuilder() {
          if (numberBuilder_ != null) {
            return numberBuilder_.getMessageOrBuilder();
          } else {
            return number_;
          }
        }
        /**
         * <code>required .NodeMetrics.Number number = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder> 
            getNumberFieldBuilder() {
          if (numberBuilder_ == null) {
            numberBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder>(
                    number_,
                    getParentForChildren(),
                    isClean());
            number_ = null;
          }
          return numberBuilder_;
        }

        // optional .NodeMetrics.EWMA ewma = 3;
        private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA ewma_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder> ewmaBuilder_;
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        public boolean hasEwma() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA getEwma() {
          if (ewmaBuilder_ == null) {
            return ewma_;
          } else {
            return ewmaBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        public Builder setEwma(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA value) {
          if (ewmaBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ewma_ = value;
            onChanged();
          } else {
            ewmaBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        public Builder setEwma(
            akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder builderForValue) {
          if (ewmaBuilder_ == null) {
            ewma_ = builderForValue.build();
            onChanged();
          } else {
            ewmaBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        public Builder mergeEwma(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA value) {
          if (ewmaBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                ewma_ != akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance()) {
              ewma_ =
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.newBuilder(ewma_).mergeFrom(value).buildPartial();
            } else {
              ewma_ = value;
            }
            onChanged();
          } else {
            ewmaBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        public Builder clearEwma() {
          if (ewmaBuilder_ == null) {
            ewma_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance();
            onChanged();
          } else {
            ewmaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder getEwmaBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getEwmaFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder getEwmaOrBuilder() {
          if (ewmaBuilder_ != null) {
            return ewmaBuilder_.getMessageOrBuilder();
          } else {
            return ewma_;
          }
        }
        /**
         * <code>optional .NodeMetrics.EWMA ewma = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilder<
            akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder> 
            getEwmaFieldBuilder() {
          if (ewmaBuilder_ == null) {
            ewmaBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder>(
                    ewma_,
                    getParentForChildren(),
                    isClean());
            ewma_ = null;
          }
          return ewmaBuilder_;
        }

        // @@protoc_insertion_point(builder_scope:NodeMetrics.Metric)
      }

      static {
        defaultInstance = new Metric(true);
        defaultInstance.initFields();
      }

      // @@protoc_insertion_point(class_scope:NodeMetrics.Metric)
    }

    private int bitField0_;
    // required int32 addressIndex = 1;
    public static final int ADDRESSINDEX_FIELD_NUMBER = 1;
    private int addressIndex_;
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    public boolean hasAddressIndex() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required int32 addressIndex = 1;</code>
     */
    public int getAddressIndex() {
      return addressIndex_;
    }

    // required int64 timestamp = 2;
    public static final int TIMESTAMP_FIELD_NUMBER = 2;
    private long timestamp_;
    /**
     * <code>required int64 timestamp = 2;</code>
     */
    public boolean hasTimestamp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int64 timestamp = 2;</code>
     */
    public long getTimestamp() {
      return timestamp_;
    }

    // repeated .NodeMetrics.Metric metrics = 3;
    public static final int METRICS_FIELD_NUMBER = 3;
    private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric> metrics_;
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric> getMetricsList() {
      return metrics_;
    }
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder> 
        getMetricsOrBuilderList() {
      return metrics_;
    }
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    public int getMetricsCount() {
      return metrics_.size();
    }
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric getMetrics(int index) {
      return metrics_.get(index);
    }
    /**
     * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder getMetricsOrBuilder(
        int index) {
      return metrics_.get(index);
    }

    private void initFields() {
      addressIndex_ = 0;
      timestamp_ = 0L;
      metrics_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasAddressIndex()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTimestamp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getMetricsCount(); i++) {
        if (!getMetrics(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, addressIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, timestamp_);
      }
      for (int i = 0; i < metrics_.size(); i++) {
        output.writeMessage(3, metrics_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, addressIndex_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, timestamp_);
      }
      for (int i = 0; i < metrics_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, metrics_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code NodeMetrics}
     *
     * <pre>
     **
     * Node Metrics
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getMetricsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        addressIndex_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        timestamp_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (metricsBuilder_ == null) {
          metrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          metricsBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics build() {
        akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics result = new akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.addressIndex_ = addressIndex_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.timestamp_ = timestamp_;
        if (metricsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            metrics_ = java.util.Collections.unmodifiableList(metrics_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.metrics_ = metrics_;
        } else {
          result.metrics_ = metricsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDefaultInstance()) return this;
        if (other.hasAddressIndex()) {
          setAddressIndex(other.getAddressIndex());
        }
        if (other.hasTimestamp()) {
          setTimestamp(other.getTimestamp());
        }
        if (metricsBuilder_ == null) {
          if (!other.metrics_.isEmpty()) {
            if (metrics_.isEmpty()) {
              metrics_ = other.metrics_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureMetricsIsMutable();
              metrics_.addAll(other.metrics_);
            }
            onChanged();
          }
        } else {
          if (!other.metrics_.isEmpty()) {
            if (metricsBuilder_.isEmpty()) {
              metricsBuilder_.dispose();
              metricsBuilder_ = null;
              metrics_ = other.metrics_;
              bitField0_ = (bitField0_ & ~0x00000004);
              metricsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMetricsFieldBuilder() : null;
            } else {
              metricsBuilder_.addAllMessages(other.metrics_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAddressIndex()) {
          
          return false;
        }
        if (!hasTimestamp()) {
          
          return false;
        }
        for (int i = 0; i < getMetricsCount(); i++) {
          if (!getMetrics(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required int32 addressIndex = 1;
      private int addressIndex_ ;
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public boolean hasAddressIndex() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public int getAddressIndex() {
        return addressIndex_;
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public Builder setAddressIndex(int value) {
        bitField0_ |= 0x00000001;
        addressIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 addressIndex = 1;</code>
       */
      public Builder clearAddressIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        addressIndex_ = 0;
        onChanged();
        return this;
      }

      // required int64 timestamp = 2;
      private long timestamp_ ;
      /**
       * <code>required int64 timestamp = 2;</code>
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int64 timestamp = 2;</code>
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <code>required int64 timestamp = 2;</code>
       */
      public Builder setTimestamp(long value) {
        bitField0_ |= 0x00000002;
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 timestamp = 2;</code>
       */
      public Builder clearTimestamp() {
        bitField0_ = (bitField0_ & ~0x00000002);
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      // repeated .NodeMetrics.Metric metrics = 3;
      private java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric> metrics_ =
        java.util.Collections.emptyList();
      private void ensureMetricsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          metrics_ = new java.util.ArrayList<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric>(metrics_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder> metricsBuilder_;

      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric> getMetricsList() {
        if (metricsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(metrics_);
        } else {
          return metricsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public int getMetricsCount() {
        if (metricsBuilder_ == null) {
          return metrics_.size();
        } else {
          return metricsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric getMetrics(int index) {
        if (metricsBuilder_ == null) {
          return metrics_.get(index);
        } else {
          return metricsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder setMetrics(
          int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.set(index, value);
          onChanged();
        } else {
          metricsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder setMetrics(
          int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.set(index, builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder addMetrics(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.add(value);
          onChanged();
        } else {
          metricsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder addMetrics(
          int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.add(index, value);
          onChanged();
        } else {
          metricsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder addMetrics(
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.add(builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder addMetrics(
          int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.add(index, builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder addAllMetrics(
          java.lang.Iterable<? extends akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric> values) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          super.addAll(values, metrics_);
          onChanged();
        } else {
          metricsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder clearMetrics() {
        if (metricsBuilder_ == null) {
          metrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          metricsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public Builder removeMetrics(int index) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.remove(index);
          onChanged();
        } else {
          metricsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder getMetricsBuilder(
          int index) {
        return getMetricsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder getMetricsOrBuilder(
          int index) {
        if (metricsBuilder_ == null) {
          return metrics_.get(index);  } else {
          return metricsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public java.util.List<? extends akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder> 
           getMetricsOrBuilderList() {
        if (metricsBuilder_ != null) {
          return metricsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(metrics_);
        }
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder addMetricsBuilder() {
        return getMetricsFieldBuilder().addBuilder(
            akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.getDefaultInstance());
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder addMetricsBuilder(
          int index) {
        return getMetricsFieldBuilder().addBuilder(
            index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.getDefaultInstance());
      }
      /**
       * <code>repeated .NodeMetrics.Metric metrics = 3;</code>
       */
      public java.util.List<akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder> 
           getMetricsBuilderList() {
        return getMetricsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder> 
          getMetricsFieldBuilder() {
        if (metricsBuilder_ == null) {
          metricsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder>(
                  metrics_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          metrics_ = null;
        }
        return metricsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:NodeMetrics)
    }

    static {
      defaultInstance = new NodeMetrics(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:NodeMetrics)
  }

  public interface EmptyOrBuilder
      extends com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code Empty}
   *
   * <pre>
   **
   * An empty message
   * </pre>
   */
  public static final class Empty extends
      com.google.protobuf.GeneratedMessage
      implements EmptyOrBuilder {
    // Use Empty.newBuilder() to construct.
    private Empty(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Empty(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Empty defaultInstance;
    public static Empty getDefaultInstance() {
      return defaultInstance;
    }

    public Empty getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Empty(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Empty_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Empty_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.Empty.class, akka.cluster.protobuf.msg.ClusterMessages.Empty.Builder.class);
    }

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

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

    private void initFields() {
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Empty parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.Empty prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Empty}
     *
     * <pre>
     **
     * An empty message
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.EmptyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Empty_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Empty_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.Empty.class, akka.cluster.protobuf.msg.ClusterMessages.Empty.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.Empty.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Empty_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Empty getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.Empty.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Empty build() {
        akka.cluster.protobuf.msg.ClusterMessages.Empty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Empty buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.Empty result = new akka.cluster.protobuf.msg.ClusterMessages.Empty(this);
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.Empty) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.Empty)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.Empty other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.Empty.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        akka.cluster.protobuf.msg.ClusterMessages.Empty parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.Empty) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Empty)
    }

    static {
      defaultInstance = new Empty(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Empty)
  }

  public interface AddressOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required string system = 1;
    /**
     * <code>required string system = 1;</code>
     */
    boolean hasSystem();
    /**
     * <code>required string system = 1;</code>
     */
    java.lang.String getSystem();
    /**
     * <code>required string system = 1;</code>
     */
    com.google.protobuf.ByteString
        getSystemBytes();

    // required string hostname = 2;
    /**
     * <code>required string hostname = 2;</code>
     */
    boolean hasHostname();
    /**
     * <code>required string hostname = 2;</code>
     */
    java.lang.String getHostname();
    /**
     * <code>required string hostname = 2;</code>
     */
    com.google.protobuf.ByteString
        getHostnameBytes();

    // required uint32 port = 3;
    /**
     * <code>required uint32 port = 3;</code>
     */
    boolean hasPort();
    /**
     * <code>required uint32 port = 3;</code>
     */
    int getPort();

    // optional string protocol = 4;
    /**
     * <code>optional string protocol = 4;</code>
     */
    boolean hasProtocol();
    /**
     * <code>optional string protocol = 4;</code>
     */
    java.lang.String getProtocol();
    /**
     * <code>optional string protocol = 4;</code>
     */
    com.google.protobuf.ByteString
        getProtocolBytes();
  }
  /**
   * Protobuf type {@code Address}
   *
   * <pre>
   **
   * Defines a remote address.
   * </pre>
   */
  public static final class Address extends
      com.google.protobuf.GeneratedMessage
      implements AddressOrBuilder {
    // Use Address.newBuilder() to construct.
    private Address(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Address(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Address defaultInstance;
    public static Address getDefaultInstance() {
      return defaultInstance;
    }

    public Address getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @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 {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              system_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              hostname_ = input.readBytes();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              port_ = input.readUInt32();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              protocol_ = input.readBytes();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Address_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Address_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.Address.class, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder.class);
    }

    public static 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);
      }
    };

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

    private int bitField0_;
    // required string system = 1;
    public static final int SYSTEM_FIELD_NUMBER = 1;
    private java.lang.Object system_;
    /**
     * <code>required string system = 1;</code>
     */
    public boolean hasSystem() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string system = 1;</code>
     */
    public java.lang.String getSystem() {
      java.lang.Object ref = system_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          system_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string system = 1;</code>
     */
    public com.google.protobuf.ByteString
        getSystemBytes() {
      java.lang.Object ref = system_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        system_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required string hostname = 2;
    public static final int HOSTNAME_FIELD_NUMBER = 2;
    private java.lang.Object hostname_;
    /**
     * <code>required string hostname = 2;</code>
     */
    public boolean hasHostname() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string hostname = 2;</code>
     */
    public java.lang.String getHostname() {
      java.lang.Object ref = hostname_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          hostname_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string hostname = 2;</code>
     */
    public com.google.protobuf.ByteString
        getHostnameBytes() {
      java.lang.Object ref = hostname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        hostname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // required uint32 port = 3;
    public static final int PORT_FIELD_NUMBER = 3;
    private int port_;
    /**
     * <code>required uint32 port = 3;</code>
     */
    public boolean hasPort() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required uint32 port = 3;</code>
     */
    public int getPort() {
      return port_;
    }

    // optional string protocol = 4;
    public static final int PROTOCOL_FIELD_NUMBER = 4;
    private java.lang.Object protocol_;
    /**
     * <code>optional string protocol = 4;</code>
     */
    public boolean hasProtocol() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional string protocol = 4;</code>
     */
    public java.lang.String getProtocol() {
      java.lang.Object ref = protocol_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          protocol_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string protocol = 4;</code>
     */
    public com.google.protobuf.ByteString
        getProtocolBytes() {
      java.lang.Object ref = protocol_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        protocol_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      system_ = "";
      hostname_ = "";
      port_ = 0;
      protocol_ = "";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasSystem()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasHostname()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPort()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getSystemBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getHostnameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt32(3, port_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBytes(4, getProtocolBytes());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getSystemBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getHostnameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, port_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getProtocolBytes());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.Address parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.Address prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Address}
     *
     * <pre>
     **
     * Defines a remote address.
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Address_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Address_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.Address.class, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.Address.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        system_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        hostname_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        port_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        protocol_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_Address_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Address getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Address build() {
        akka.cluster.protobuf.msg.ClusterMessages.Address result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.Address buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.Address result = new akka.cluster.protobuf.msg.ClusterMessages.Address(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.system_ = system_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.hostname_ = hostname_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.port_ = port_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.protocol_ = protocol_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.Address) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.Address)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.Address other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance()) return this;
        if (other.hasSystem()) {
          bitField0_ |= 0x00000001;
          system_ = other.system_;
          onChanged();
        }
        if (other.hasHostname()) {
          bitField0_ |= 0x00000002;
          hostname_ = other.hostname_;
          onChanged();
        }
        if (other.hasPort()) {
          setPort(other.getPort());
        }
        if (other.hasProtocol()) {
          bitField0_ |= 0x00000008;
          protocol_ = other.protocol_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasSystem()) {
          
          return false;
        }
        if (!hasHostname()) {
          
          return false;
        }
        if (!hasPort()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.Address parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.Address) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required string system = 1;
      private java.lang.Object system_ = "";
      /**
       * <code>required string system = 1;</code>
       */
      public boolean hasSystem() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string system = 1;</code>
       */
      public java.lang.String getSystem() {
        java.lang.Object ref = system_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          system_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string system = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSystemBytes() {
        java.lang.Object ref = system_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          system_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string system = 1;</code>
       */
      public Builder setSystem(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        system_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string system = 1;</code>
       */
      public Builder clearSystem() {
        bitField0_ = (bitField0_ & ~0x00000001);
        system_ = getDefaultInstance().getSystem();
        onChanged();
        return this;
      }
      /**
       * <code>required string system = 1;</code>
       */
      public Builder setSystemBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        system_ = value;
        onChanged();
        return this;
      }

      // required string hostname = 2;
      private java.lang.Object hostname_ = "";
      /**
       * <code>required string hostname = 2;</code>
       */
      public boolean hasHostname() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string hostname = 2;</code>
       */
      public java.lang.String getHostname() {
        java.lang.Object ref = hostname_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          hostname_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string hostname = 2;</code>
       */
      public com.google.protobuf.ByteString
          getHostnameBytes() {
        java.lang.Object ref = hostname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string hostname = 2;</code>
       */
      public Builder setHostname(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        hostname_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string hostname = 2;</code>
       */
      public Builder clearHostname() {
        bitField0_ = (bitField0_ & ~0x00000002);
        hostname_ = getDefaultInstance().getHostname();
        onChanged();
        return this;
      }
      /**
       * <code>required string hostname = 2;</code>
       */
      public Builder setHostnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        hostname_ = value;
        onChanged();
        return this;
      }

      // required uint32 port = 3;
      private int port_ ;
      /**
       * <code>required uint32 port = 3;</code>
       */
      public boolean hasPort() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required uint32 port = 3;</code>
       */
      public int getPort() {
        return port_;
      }
      /**
       * <code>required uint32 port = 3;</code>
       */
      public Builder setPort(int value) {
        bitField0_ |= 0x00000004;
        port_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 port = 3;</code>
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000004);
        port_ = 0;
        onChanged();
        return this;
      }

      // optional string protocol = 4;
      private java.lang.Object protocol_ = "";
      /**
       * <code>optional string protocol = 4;</code>
       */
      public boolean hasProtocol() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string protocol = 4;</code>
       */
      public java.lang.String getProtocol() {
        java.lang.Object ref = protocol_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          protocol_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string protocol = 4;</code>
       */
      public com.google.protobuf.ByteString
          getProtocolBytes() {
        java.lang.Object ref = protocol_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          protocol_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string protocol = 4;</code>
       */
      public Builder setProtocol(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        protocol_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string protocol = 4;</code>
       */
      public Builder clearProtocol() {
        bitField0_ = (bitField0_ & ~0x00000008);
        protocol_ = getDefaultInstance().getProtocol();
        onChanged();
        return this;
      }
      /**
       * <code>optional string protocol = 4;</code>
       */
      public Builder setProtocolBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        protocol_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Address)
    }

    static {
      defaultInstance = new Address(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:Address)
  }

  public interface UniqueAddressOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required .Address address = 1;
    /**
     * <code>required .Address address = 1;</code>
     */
    boolean hasAddress();
    /**
     * <code>required .Address address = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.Address getAddress();
    /**
     * <code>required .Address address = 1;</code>
     */
    akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAddressOrBuilder();

    // required uint32 uid = 2;
    /**
     * <code>required uint32 uid = 2;</code>
     */
    boolean hasUid();
    /**
     * <code>required uint32 uid = 2;</code>
     */
    int getUid();
  }
  /**
   * Protobuf type {@code UniqueAddress}
   *
   * <pre>
   **
   * Defines a remote address with uid.
   * </pre>
   */
  public static final class UniqueAddress extends
      com.google.protobuf.GeneratedMessage
      implements UniqueAddressOrBuilder {
    // Use UniqueAddress.newBuilder() to construct.
    private UniqueAddress(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private UniqueAddress(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final UniqueAddress defaultInstance;
    public static UniqueAddress getDefaultInstance() {
      return defaultInstance;
    }

    public UniqueAddress getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private UniqueAddress(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      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 (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              akka.cluster.protobuf.msg.ClusterMessages.Address.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = address_.toBuilder();
              }
              address_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.Address.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(address_);
                address_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              uid_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_UniqueAddress_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.cluster.protobuf.msg.ClusterMessages.internal_static_UniqueAddress_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.class, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder.class);
    }

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

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

    private int bitField0_;
    // required .Address address = 1;
    public static final int ADDRESS_FIELD_NUMBER = 1;
    private akka.cluster.protobuf.msg.ClusterMessages.Address address_;
    /**
     * <code>required .Address address = 1;</code>
     */
    public boolean hasAddress() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .Address address = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.Address getAddress() {
      return address_;
    }
    /**
     * <code>required .Address address = 1;</code>
     */
    public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAddressOrBuilder() {
      return address_;
    }

    // required uint32 uid = 2;
    public static final int UID_FIELD_NUMBER = 2;
    private int uid_;
    /**
     * <code>required uint32 uid = 2;</code>
     */
    public boolean hasUid() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint32 uid = 2;</code>
     */
    public int getUid() {
      return uid_;
    }

    private void initFields() {
      address_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
      uid_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasAddress()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAddress().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, address_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt32(2, uid_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, address_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, uid_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code UniqueAddress}
     *
     * <pre>
     **
     * Defines a remote address with uid.
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.cluster.protobuf.msg.ClusterMessages.UniqueAddressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_UniqueAddress_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_UniqueAddress_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.class, akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.Builder.class);
      }

      // Construct using akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getAddressFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (addressBuilder_ == null) {
          address_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
        } else {
          addressBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        uid_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.internal_static_UniqueAddress_descriptor;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress getDefaultInstanceForType() {
        return akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance();
      }

      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress build() {
        akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress buildPartial() {
        akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress result = new akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (addressBuilder_ == null) {
          result.address_ = address_;
        } else {
          result.address_ = addressBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.uid_ = uid_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress) {
          return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress other) {
        if (other == akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress.getDefaultInstance()) return this;
        if (other.hasAddress()) {
          mergeAddress(other.getAddress());
        }
        if (other.hasUid()) {
          setUid(other.getUid());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAddress()) {
          
          return false;
        }
        if (!hasUid()) {
          
          return false;
        }
        if (!getAddress().isInitialized()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.UniqueAddress) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required .Address address = 1;
      private akka.cluster.protobuf.msg.ClusterMessages.Address address_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> addressBuilder_;
      /**
       * <code>required .Address address = 1;</code>
       */
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .Address address = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Address getAddress() {
        if (addressBuilder_ == null) {
          return address_;
        } else {
          return addressBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Address address = 1;</code>
       */
      public Builder setAddress(akka.cluster.protobuf.msg.ClusterMessages.Address value) {
        if (addressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          address_ = value;
          onChanged();
        } else {
          addressBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Address address = 1;</code>
       */
      public Builder setAddress(
          akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) {
        if (addressBuilder_ == null) {
          address_ = builderForValue.build();
          onChanged();
        } else {
          addressBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Address address = 1;</code>
       */
      public Builder mergeAddress(akka.cluster.protobuf.msg.ClusterMessages.Address value) {
        if (addressBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              address_ != akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance()) {
            address_ =
              akka.cluster.protobuf.msg.ClusterMessages.Address.newBuilder(address_).mergeFrom(value).buildPartial();
          } else {
            address_ = value;
          }
          onChanged();
        } else {
          addressBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Address address = 1;</code>
       */
      public Builder clearAddress() {
        if (addressBuilder_ == null) {
          address_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance();
          onChanged();
        } else {
          addressBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Address address = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder getAddressBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getAddressFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Address address = 1;</code>
       */
      public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAddressOrBuilder() {
        if (addressBuilder_ != null) {
          return addressBuilder_.getMessageOrBuilder();
        } else {
          return address_;
        }
      }
      /**
       * <code>required .Address address = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> 
          getAddressFieldBuilder() {
        if (addressBuilder_ == null) {
          addressBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder>(
                  address_,
                  getParentForChildren(),
                  isClean());
          address_ = null;
        }
        return addressBuilder_;
      }

      // required uint32 uid = 2;
      private int uid_ ;
      /**
       * <code>required uint32 uid = 2;</code>
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required uint32 uid = 2;</code>
       */
      public int getUid() {
        return uid_;
      }
      /**
       * <code>required uint32 uid = 2;</code>
       */
      public Builder setUid(int value) {
        bitField0_ |= 0x00000002;
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 uid = 2;</code>
       */
      public Builder clearUid() {
        bitField0_ = (bitField0_ & ~0x00000002);
        uid_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:UniqueAddress)
    }

    static {
      defaultInstance = new UniqueAddress(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:UniqueAddress)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Join_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Join_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Welcome_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Welcome_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GossipEnvelope_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GossipEnvelope_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GossipStatus_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GossipStatus_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Gossip_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Gossip_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GossipOverview_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GossipOverview_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_ObserverReachability_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_ObserverReachability_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_SubjectReachability_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SubjectReachability_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Member_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Member_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_VectorClock_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_VectorClock_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_VectorClock_Version_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_VectorClock_Version_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_MetricsGossipEnvelope_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_MetricsGossipEnvelope_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_MetricsGossip_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_MetricsGossip_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_NodeMetrics_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_NodeMetrics_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_NodeMetrics_Number_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_NodeMetrics_Number_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_NodeMetrics_EWMA_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_NodeMetrics_EWMA_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_NodeMetrics_Metric_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_NodeMetrics_Metric_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Empty_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Empty_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_Address_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Address_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_UniqueAddress_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_UniqueAddress_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\025ClusterMessages.proto\"3\n\004Join\022\034\n\004node\030" +
      "\001 \002(\0132\016.UniqueAddress\022\r\n\005roles\030\002 \003(\t\"@\n\007" +
      "Welcome\022\034\n\004from\030\001 \002(\0132\016.UniqueAddress\022\027\n" +
      "\006gossip\030\002 \002(\0132\007.Gossip\"d\n\016GossipEnvelope" +
      "\022\034\n\004from\030\001 \002(\0132\016.UniqueAddress\022\032\n\002to\030\002 \002" +
      "(\0132\016.UniqueAddress\022\030\n\020serializedGossip\030\003" +
      " \002(\014\"^\n\014GossipStatus\022\034\n\004from\030\001 \002(\0132\016.Uni" +
      "queAddress\022\021\n\tallHashes\030\002 \003(\t\022\035\n\007version" +
      "\030\003 \002(\0132\014.VectorClock\"\257\001\n\006Gossip\022$\n\014allAd" +
      "dresses\030\001 \003(\0132\016.UniqueAddress\022\020\n\010allRole",
      "s\030\002 \003(\t\022\021\n\tallHashes\030\003 \003(\t\022\030\n\007members\030\004 " +
      "\003(\0132\007.Member\022!\n\010overview\030\005 \002(\0132\017.GossipO" +
      "verview\022\035\n\007version\030\006 \002(\0132\014.VectorClock\"S" +
      "\n\016GossipOverview\022\014\n\004seen\030\001 \003(\005\0223\n\024observ" +
      "erReachability\030\002 \003(\0132\025.ObserverReachabil" +
      "ity\"p\n\024ObserverReachability\022\024\n\014addressIn" +
      "dex\030\001 \002(\005\022\017\n\007version\030\004 \002(\003\0221\n\023subjectRea" +
      "chability\030\002 \003(\0132\024.SubjectReachability\"a\n" +
      "\023SubjectReachability\022\024\n\014addressIndex\030\001 \002" +
      "(\005\022#\n\006status\030\003 \002(\0162\023.ReachabilityStatus\022",
      "\017\n\007version\030\004 \002(\003\"i\n\006Member\022\024\n\014addressInd" +
      "ex\030\001 \002(\005\022\020\n\010upNumber\030\002 \002(\005\022\035\n\006status\030\003 \002" +
      "(\0162\r.MemberStatus\022\030\n\014rolesIndexes\030\004 \003(\005B" +
      "\002\020\001\"y\n\013VectorClock\022\021\n\ttimestamp\030\001 \001(\003\022&\n" +
      "\010versions\030\002 \003(\0132\024.VectorClock.Version\032/\n" +
      "\007Version\022\021\n\thashIndex\030\001 \002(\005\022\021\n\ttimestamp" +
      "\030\002 \002(\003\"^\n\025MetricsGossipEnvelope\022\026\n\004from\030" +
      "\001 \002(\0132\010.Address\022\036\n\006gossip\030\002 \002(\0132\016.Metric" +
      "sGossip\022\r\n\005reply\030\003 \002(\010\"j\n\rMetricsGossip\022" +
      "\036\n\014allAddresses\030\001 \003(\0132\010.Address\022\026\n\016allMe",
      "tricNames\030\002 \003(\t\022!\n\013nodeMetrics\030\003 \003(\0132\014.N" +
      "odeMetrics\"\230\003\n\013NodeMetrics\022\024\n\014addressInd" +
      "ex\030\001 \002(\005\022\021\n\ttimestamp\030\002 \002(\003\022$\n\007metrics\030\003" +
      " \003(\0132\023.NodeMetrics.Metric\032e\n\006Number\022%\n\004t" +
      "ype\030\001 \002(\0162\027.NodeMetrics.NumberType\022\017\n\007va" +
      "lue32\030\002 \001(\r\022\017\n\007value64\030\003 \001(\004\022\022\n\nserializ" +
      "ed\030\004 \001(\014\032$\n\004EWMA\022\r\n\005value\030\001 \002(\001\022\r\n\005alpha" +
      "\030\002 \002(\001\032a\n\006Metric\022\021\n\tnameIndex\030\001 \002(\005\022#\n\006n" +
      "umber\030\002 \002(\0132\023.NodeMetrics.Number\022\037\n\004ewma" +
      "\030\003 \001(\0132\021.NodeMetrics.EWMA\"J\n\nNumberType\022",
      "\016\n\nSerialized\020\000\022\n\n\006Double\020\001\022\t\n\005Float\020\002\022\013" +
      "\n\007Integer\020\003\022\010\n\004Long\020\004\"\007\n\005Empty\"K\n\007Addres" +
      "s\022\016\n\006system\030\001 \002(\t\022\020\n\010hostname\030\002 \002(\t\022\014\n\004p" +
      "ort\030\003 \002(\r\022\020\n\010protocol\030\004 \001(\t\"7\n\rUniqueAdd" +
      "ress\022\031\n\007address\030\001 \002(\0132\010.Address\022\013\n\003uid\030\002" +
      " \002(\r*D\n\022ReachabilityStatus\022\r\n\tReachable\020" +
      "\000\022\017\n\013Unreachable\020\001\022\016\n\nTerminated\020\002*T\n\014Me" +
      "mberStatus\022\013\n\007Joining\020\000\022\006\n\002Up\020\001\022\013\n\007Leavi" +
      "ng\020\002\022\013\n\007Exiting\020\003\022\010\n\004Down\020\004\022\013\n\007Removed\020\005" +
      "B\035\n\031akka.cluster.protobuf.msgH\001"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_Join_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_Join_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Join_descriptor,
              new java.lang.String[] { "Node", "Roles", });
          internal_static_Welcome_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_Welcome_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Welcome_descriptor,
              new java.lang.String[] { "From", "Gossip", });
          internal_static_GossipEnvelope_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_GossipEnvelope_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GossipEnvelope_descriptor,
              new java.lang.String[] { "From", "To", "SerializedGossip", });
          internal_static_GossipStatus_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_GossipStatus_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GossipStatus_descriptor,
              new java.lang.String[] { "From", "AllHashes", "Version", });
          internal_static_Gossip_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_Gossip_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Gossip_descriptor,
              new java.lang.String[] { "AllAddresses", "AllRoles", "AllHashes", "Members", "Overview", "Version", });
          internal_static_GossipOverview_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_GossipOverview_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GossipOverview_descriptor,
              new java.lang.String[] { "Seen", "ObserverReachability", });
          internal_static_ObserverReachability_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_ObserverReachability_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_ObserverReachability_descriptor,
              new java.lang.String[] { "AddressIndex", "Version", "SubjectReachability", });
          internal_static_SubjectReachability_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_SubjectReachability_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_SubjectReachability_descriptor,
              new java.lang.String[] { "AddressIndex", "Status", "Version", });
          internal_static_Member_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_Member_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Member_descriptor,
              new java.lang.String[] { "AddressIndex", "UpNumber", "Status", "RolesIndexes", });
          internal_static_VectorClock_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_VectorClock_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_VectorClock_descriptor,
              new java.lang.String[] { "Timestamp", "Versions", });
          internal_static_VectorClock_Version_descriptor =
            internal_static_VectorClock_descriptor.getNestedTypes().get(0);
          internal_static_VectorClock_Version_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_VectorClock_Version_descriptor,
              new java.lang.String[] { "HashIndex", "Timestamp", });
          internal_static_MetricsGossipEnvelope_descriptor =
            getDescriptor().getMessageTypes().get(10);
          internal_static_MetricsGossipEnvelope_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_MetricsGossipEnvelope_descriptor,
              new java.lang.String[] { "From", "Gossip", "Reply", });
          internal_static_MetricsGossip_descriptor =
            getDescriptor().getMessageTypes().get(11);
          internal_static_MetricsGossip_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_MetricsGossip_descriptor,
              new java.lang.String[] { "AllAddresses", "AllMetricNames", "NodeMetrics", });
          internal_static_NodeMetrics_descriptor =
            getDescriptor().getMessageTypes().get(12);
          internal_static_NodeMetrics_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_NodeMetrics_descriptor,
              new java.lang.String[] { "AddressIndex", "Timestamp", "Metrics", });
          internal_static_NodeMetrics_Number_descriptor =
            internal_static_NodeMetrics_descriptor.getNestedTypes().get(0);
          internal_static_NodeMetrics_Number_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_NodeMetrics_Number_descriptor,
              new java.lang.String[] { "Type", "Value32", "Value64", "Serialized", });
          internal_static_NodeMetrics_EWMA_descriptor =
            internal_static_NodeMetrics_descriptor.getNestedTypes().get(1);
          internal_static_NodeMetrics_EWMA_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_NodeMetrics_EWMA_descriptor,
              new java.lang.String[] { "Value", "Alpha", });
          internal_static_NodeMetrics_Metric_descriptor =
            internal_static_NodeMetrics_descriptor.getNestedTypes().get(2);
          internal_static_NodeMetrics_Metric_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_NodeMetrics_Metric_descriptor,
              new java.lang.String[] { "NameIndex", "Number", "Ewma", });
          internal_static_Empty_descriptor =
            getDescriptor().getMessageTypes().get(13);
          internal_static_Empty_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Empty_descriptor,
              new java.lang.String[] { });
          internal_static_Address_descriptor =
            getDescriptor().getMessageTypes().get(14);
          internal_static_Address_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Address_descriptor,
              new java.lang.String[] { "System", "Hostname", "Port", "Protocol", });
          internal_static_UniqueAddress_descriptor =
            getDescriptor().getMessageTypes().get(15);
          internal_static_UniqueAddress_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_UniqueAddress_descriptor,
              new java.lang.String[] { "Address", "Uid", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}

Other Akka source code examples

Here is a short list of links related to this Akka ClusterMessages.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.