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

package akka.remote;

public final class ContainerFormats {
  private ContainerFormats() {}
  public static void registerAllExtensions(
      akka.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code PatternType}
   */
  public enum PatternType
      implements akka.protobuf.ProtocolMessageEnum {
    /**
     * <code>PARENT = 0;</code>
     */
    PARENT(0, 0),
    /**
     * <code>CHILD_NAME = 1;</code>
     */
    CHILD_NAME(1, 1),
    /**
     * <code>CHILD_PATTERN = 2;</code>
     */
    CHILD_PATTERN(2, 2),
    ;

    /**
     * <code>PARENT = 0;</code>
     */
    public static final int PARENT_VALUE = 0;
    /**
     * <code>CHILD_NAME = 1;</code>
     */
    public static final int CHILD_NAME_VALUE = 1;
    /**
     * <code>CHILD_PATTERN = 2;</code>
     */
    public static final int CHILD_PATTERN_VALUE = 2;


    public final int getNumber() { return value; }

    public static PatternType valueOf(int value) {
      switch (value) {
        case 0: return PARENT;
        case 1: return CHILD_NAME;
        case 2: return CHILD_PATTERN;
        default: return null;
      }
    }

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

    public final akka.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final akka.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final akka.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return akka.remote.ContainerFormats.getDescriptor().getEnumTypes().get(0);
    }

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

    public static PatternType valueOf(
        akka.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 PatternType(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:PatternType)
  }

  public interface SelectionEnvelopeOrBuilder
      extends akka.protobuf.MessageOrBuilder {

    // required bytes enclosedMessage = 1;
    /**
     * <code>required bytes enclosedMessage = 1;</code>
     */
    boolean hasEnclosedMessage();
    /**
     * <code>required bytes enclosedMessage = 1;</code>
     */
    akka.protobuf.ByteString getEnclosedMessage();

    // required int32 serializerId = 2;
    /**
     * <code>required int32 serializerId = 2;</code>
     */
    boolean hasSerializerId();
    /**
     * <code>required int32 serializerId = 2;</code>
     */
    int getSerializerId();

    // repeated .Selection pattern = 3;
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    java.util.List<akka.remote.ContainerFormats.Selection> 
        getPatternList();
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    akka.remote.ContainerFormats.Selection getPattern(int index);
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    int getPatternCount();
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    java.util.List<? extends akka.remote.ContainerFormats.SelectionOrBuilder> 
        getPatternOrBuilderList();
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    akka.remote.ContainerFormats.SelectionOrBuilder getPatternOrBuilder(
        int index);

    // optional bytes messageManifest = 4;
    /**
     * <code>optional bytes messageManifest = 4;</code>
     */
    boolean hasMessageManifest();
    /**
     * <code>optional bytes messageManifest = 4;</code>
     */
    akka.protobuf.ByteString getMessageManifest();

    // optional bool wildcardFanOut = 5;
    /**
     * <code>optional bool wildcardFanOut = 5;</code>
     *
     * <pre>
     * optional for pre 2.3.4 compatibility 
     * </pre>
     */
    boolean hasWildcardFanOut();
    /**
     * <code>optional bool wildcardFanOut = 5;</code>
     *
     * <pre>
     * optional for pre 2.3.4 compatibility 
     * </pre>
     */
    boolean getWildcardFanOut();
  }
  /**
   * Protobuf type {@code SelectionEnvelope}
   */
  public static final class SelectionEnvelope extends
      akka.protobuf.GeneratedMessage
      implements SelectionEnvelopeOrBuilder {
    // Use SelectionEnvelope.newBuilder() to construct.
    private SelectionEnvelope(akka.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SelectionEnvelope(boolean noInit) { this.unknownFields = akka.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public SelectionEnvelope getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final akka.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final akka.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SelectionEnvelope(
        akka.protobuf.CodedInputStream input,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws akka.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      akka.protobuf.UnknownFieldSet.Builder unknownFields =
          akka.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;
              enclosedMessage_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              serializerId_ = input.readInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                pattern_ = new java.util.ArrayList<akka.remote.ContainerFormats.Selection>();
                mutable_bitField0_ |= 0x00000004;
              }
              pattern_.add(input.readMessage(akka.remote.ContainerFormats.Selection.PARSER, extensionRegistry));
              break;
            }
            case 34: {
              bitField0_ |= 0x00000004;
              messageManifest_ = input.readBytes();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              wildcardFanOut_ = input.readBool();
              break;
            }
          }
        }
      } catch (akka.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new akka.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          pattern_ = java.util.Collections.unmodifiableList(pattern_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final akka.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.remote.ContainerFormats.internal_static_SelectionEnvelope_descriptor;
    }

    protected akka.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.remote.ContainerFormats.internal_static_SelectionEnvelope_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.remote.ContainerFormats.SelectionEnvelope.class, akka.remote.ContainerFormats.SelectionEnvelope.Builder.class);
    }

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

    @java.lang.Override
    public akka.protobuf.Parser<SelectionEnvelope> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // required bytes enclosedMessage = 1;
    public static final int ENCLOSEDMESSAGE_FIELD_NUMBER = 1;
    private akka.protobuf.ByteString enclosedMessage_;
    /**
     * <code>required bytes enclosedMessage = 1;</code>
     */
    public boolean hasEnclosedMessage() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required bytes enclosedMessage = 1;</code>
     */
    public akka.protobuf.ByteString getEnclosedMessage() {
      return enclosedMessage_;
    }

    // required int32 serializerId = 2;
    public static final int SERIALIZERID_FIELD_NUMBER = 2;
    private int serializerId_;
    /**
     * <code>required int32 serializerId = 2;</code>
     */
    public boolean hasSerializerId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 serializerId = 2;</code>
     */
    public int getSerializerId() {
      return serializerId_;
    }

    // repeated .Selection pattern = 3;
    public static final int PATTERN_FIELD_NUMBER = 3;
    private java.util.List<akka.remote.ContainerFormats.Selection> pattern_;
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    public java.util.List<akka.remote.ContainerFormats.Selection> getPatternList() {
      return pattern_;
    }
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    public java.util.List<? extends akka.remote.ContainerFormats.SelectionOrBuilder> 
        getPatternOrBuilderList() {
      return pattern_;
    }
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    public int getPatternCount() {
      return pattern_.size();
    }
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    public akka.remote.ContainerFormats.Selection getPattern(int index) {
      return pattern_.get(index);
    }
    /**
     * <code>repeated .Selection pattern = 3;</code>
     */
    public akka.remote.ContainerFormats.SelectionOrBuilder getPatternOrBuilder(
        int index) {
      return pattern_.get(index);
    }

    // optional bytes messageManifest = 4;
    public static final int MESSAGEMANIFEST_FIELD_NUMBER = 4;
    private akka.protobuf.ByteString messageManifest_;
    /**
     * <code>optional bytes messageManifest = 4;</code>
     */
    public boolean hasMessageManifest() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bytes messageManifest = 4;</code>
     */
    public akka.protobuf.ByteString getMessageManifest() {
      return messageManifest_;
    }

    // optional bool wildcardFanOut = 5;
    public static final int WILDCARDFANOUT_FIELD_NUMBER = 5;
    private boolean wildcardFanOut_;
    /**
     * <code>optional bool wildcardFanOut = 5;</code>
     *
     * <pre>
     * optional for pre 2.3.4 compatibility 
     * </pre>
     */
    public boolean hasWildcardFanOut() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional bool wildcardFanOut = 5;</code>
     *
     * <pre>
     * optional for pre 2.3.4 compatibility 
     * </pre>
     */
    public boolean getWildcardFanOut() {
      return wildcardFanOut_;
    }

    private void initFields() {
      enclosedMessage_ = akka.protobuf.ByteString.EMPTY;
      serializerId_ = 0;
      pattern_ = java.util.Collections.emptyList();
      messageManifest_ = akka.protobuf.ByteString.EMPTY;
      wildcardFanOut_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasEnclosedMessage()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSerializerId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getPatternCount(); i++) {
        if (!getPattern(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(akka.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, enclosedMessage_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, serializerId_);
      }
      for (int i = 0; i < pattern_.size(); i++) {
        output.writeMessage(3, pattern_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(4, messageManifest_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(5, wildcardFanOut_);
      }
      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 += akka.protobuf.CodedOutputStream
          .computeBytesSize(1, enclosedMessage_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += akka.protobuf.CodedOutputStream
          .computeInt32Size(2, serializerId_);
      }
      for (int i = 0; i < pattern_.size(); i++) {
        size += akka.protobuf.CodedOutputStream
          .computeMessageSize(3, pattern_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += akka.protobuf.CodedOutputStream
          .computeBytesSize(4, messageManifest_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += akka.protobuf.CodedOutputStream
          .computeBoolSize(5, wildcardFanOut_);
      }
      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.remote.ContainerFormats.SelectionEnvelope parseFrom(
        akka.protobuf.ByteString data)
        throws akka.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseFrom(
        akka.protobuf.ByteString data,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws akka.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseFrom(byte[] data)
        throws akka.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseFrom(
        byte[] data,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws akka.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseFrom(
        java.io.InputStream input,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseDelimitedFrom(
        java.io.InputStream input,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseFrom(
        akka.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.remote.ContainerFormats.SelectionEnvelope parseFrom(
        akka.protobuf.CodedInputStream input,
        akka.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.remote.ContainerFormats.SelectionEnvelope prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        akka.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code SelectionEnvelope}
     */
    public static final class Builder extends
        akka.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.remote.ContainerFormats.SelectionEnvelopeOrBuilder {
      public static final akka.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.remote.ContainerFormats.internal_static_SelectionEnvelope_descriptor;
      }

      protected akka.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.remote.ContainerFormats.internal_static_SelectionEnvelope_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.remote.ContainerFormats.SelectionEnvelope.class, akka.remote.ContainerFormats.SelectionEnvelope.Builder.class);
      }

      // Construct using akka.remote.ContainerFormats.SelectionEnvelope.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        enclosedMessage_ = akka.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        serializerId_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (patternBuilder_ == null) {
          pattern_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          patternBuilder_.clear();
        }
        messageManifest_ = akka.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        wildcardFanOut_ = false;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

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

      public akka.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.remote.ContainerFormats.internal_static_SelectionEnvelope_descriptor;
      }

      public akka.remote.ContainerFormats.SelectionEnvelope getDefaultInstanceForType() {
        return akka.remote.ContainerFormats.SelectionEnvelope.getDefaultInstance();
      }

      public akka.remote.ContainerFormats.SelectionEnvelope build() {
        akka.remote.ContainerFormats.SelectionEnvelope result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.remote.ContainerFormats.SelectionEnvelope buildPartial() {
        akka.remote.ContainerFormats.SelectionEnvelope result = new akka.remote.ContainerFormats.SelectionEnvelope(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.enclosedMessage_ = enclosedMessage_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.serializerId_ = serializerId_;
        if (patternBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            pattern_ = java.util.Collections.unmodifiableList(pattern_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.pattern_ = pattern_;
        } else {
          result.pattern_ = patternBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.messageManifest_ = messageManifest_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.wildcardFanOut_ = wildcardFanOut_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(akka.protobuf.Message other) {
        if (other instanceof akka.remote.ContainerFormats.SelectionEnvelope) {
          return mergeFrom((akka.remote.ContainerFormats.SelectionEnvelope)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.remote.ContainerFormats.SelectionEnvelope other) {
        if (other == akka.remote.ContainerFormats.SelectionEnvelope.getDefaultInstance()) return this;
        if (other.hasEnclosedMessage()) {
          setEnclosedMessage(other.getEnclosedMessage());
        }
        if (other.hasSerializerId()) {
          setSerializerId(other.getSerializerId());
        }
        if (patternBuilder_ == null) {
          if (!other.pattern_.isEmpty()) {
            if (pattern_.isEmpty()) {
              pattern_ = other.pattern_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensurePatternIsMutable();
              pattern_.addAll(other.pattern_);
            }
            onChanged();
          }
        } else {
          if (!other.pattern_.isEmpty()) {
            if (patternBuilder_.isEmpty()) {
              patternBuilder_.dispose();
              patternBuilder_ = null;
              pattern_ = other.pattern_;
              bitField0_ = (bitField0_ & ~0x00000004);
              patternBuilder_ = 
                akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPatternFieldBuilder() : null;
            } else {
              patternBuilder_.addAllMessages(other.pattern_);
            }
          }
        }
        if (other.hasMessageManifest()) {
          setMessageManifest(other.getMessageManifest());
        }
        if (other.hasWildcardFanOut()) {
          setWildcardFanOut(other.getWildcardFanOut());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasEnclosedMessage()) {
          
          return false;
        }
        if (!hasSerializerId()) {
          
          return false;
        }
        for (int i = 0; i < getPatternCount(); i++) {
          if (!getPattern(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

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

      // required bytes enclosedMessage = 1;
      private akka.protobuf.ByteString enclosedMessage_ = akka.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes enclosedMessage = 1;</code>
       */
      public boolean hasEnclosedMessage() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required bytes enclosedMessage = 1;</code>
       */
      public akka.protobuf.ByteString getEnclosedMessage() {
        return enclosedMessage_;
      }
      /**
       * <code>required bytes enclosedMessage = 1;</code>
       */
      public Builder setEnclosedMessage(akka.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        enclosedMessage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes enclosedMessage = 1;</code>
       */
      public Builder clearEnclosedMessage() {
        bitField0_ = (bitField0_ & ~0x00000001);
        enclosedMessage_ = getDefaultInstance().getEnclosedMessage();
        onChanged();
        return this;
      }

      // required int32 serializerId = 2;
      private int serializerId_ ;
      /**
       * <code>required int32 serializerId = 2;</code>
       */
      public boolean hasSerializerId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 serializerId = 2;</code>
       */
      public int getSerializerId() {
        return serializerId_;
      }
      /**
       * <code>required int32 serializerId = 2;</code>
       */
      public Builder setSerializerId(int value) {
        bitField0_ |= 0x00000002;
        serializerId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 serializerId = 2;</code>
       */
      public Builder clearSerializerId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        serializerId_ = 0;
        onChanged();
        return this;
      }

      // repeated .Selection pattern = 3;
      private java.util.List<akka.remote.ContainerFormats.Selection> pattern_ =
        java.util.Collections.emptyList();
      private void ensurePatternIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          pattern_ = new java.util.ArrayList<akka.remote.ContainerFormats.Selection>(pattern_);
          bitField0_ |= 0x00000004;
         }
      }

      private akka.protobuf.RepeatedFieldBuilder<
          akka.remote.ContainerFormats.Selection, akka.remote.ContainerFormats.Selection.Builder, akka.remote.ContainerFormats.SelectionOrBuilder> patternBuilder_;

      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public java.util.List<akka.remote.ContainerFormats.Selection> getPatternList() {
        if (patternBuilder_ == null) {
          return java.util.Collections.unmodifiableList(pattern_);
        } else {
          return patternBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public int getPatternCount() {
        if (patternBuilder_ == null) {
          return pattern_.size();
        } else {
          return patternBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public akka.remote.ContainerFormats.Selection getPattern(int index) {
        if (patternBuilder_ == null) {
          return pattern_.get(index);
        } else {
          return patternBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder setPattern(
          int index, akka.remote.ContainerFormats.Selection value) {
        if (patternBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePatternIsMutable();
          pattern_.set(index, value);
          onChanged();
        } else {
          patternBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder setPattern(
          int index, akka.remote.ContainerFormats.Selection.Builder builderForValue) {
        if (patternBuilder_ == null) {
          ensurePatternIsMutable();
          pattern_.set(index, builderForValue.build());
          onChanged();
        } else {
          patternBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder addPattern(akka.remote.ContainerFormats.Selection value) {
        if (patternBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePatternIsMutable();
          pattern_.add(value);
          onChanged();
        } else {
          patternBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder addPattern(
          int index, akka.remote.ContainerFormats.Selection value) {
        if (patternBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePatternIsMutable();
          pattern_.add(index, value);
          onChanged();
        } else {
          patternBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder addPattern(
          akka.remote.ContainerFormats.Selection.Builder builderForValue) {
        if (patternBuilder_ == null) {
          ensurePatternIsMutable();
          pattern_.add(builderForValue.build());
          onChanged();
        } else {
          patternBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder addPattern(
          int index, akka.remote.ContainerFormats.Selection.Builder builderForValue) {
        if (patternBuilder_ == null) {
          ensurePatternIsMutable();
          pattern_.add(index, builderForValue.build());
          onChanged();
        } else {
          patternBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder addAllPattern(
          java.lang.Iterable<? extends akka.remote.ContainerFormats.Selection> values) {
        if (patternBuilder_ == null) {
          ensurePatternIsMutable();
          super.addAll(values, pattern_);
          onChanged();
        } else {
          patternBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder clearPattern() {
        if (patternBuilder_ == null) {
          pattern_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          patternBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public Builder removePattern(int index) {
        if (patternBuilder_ == null) {
          ensurePatternIsMutable();
          pattern_.remove(index);
          onChanged();
        } else {
          patternBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public akka.remote.ContainerFormats.Selection.Builder getPatternBuilder(
          int index) {
        return getPatternFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public akka.remote.ContainerFormats.SelectionOrBuilder getPatternOrBuilder(
          int index) {
        if (patternBuilder_ == null) {
          return pattern_.get(index);  } else {
          return patternBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public java.util.List<? extends akka.remote.ContainerFormats.SelectionOrBuilder> 
           getPatternOrBuilderList() {
        if (patternBuilder_ != null) {
          return patternBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(pattern_);
        }
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public akka.remote.ContainerFormats.Selection.Builder addPatternBuilder() {
        return getPatternFieldBuilder().addBuilder(
            akka.remote.ContainerFormats.Selection.getDefaultInstance());
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public akka.remote.ContainerFormats.Selection.Builder addPatternBuilder(
          int index) {
        return getPatternFieldBuilder().addBuilder(
            index, akka.remote.ContainerFormats.Selection.getDefaultInstance());
      }
      /**
       * <code>repeated .Selection pattern = 3;</code>
       */
      public java.util.List<akka.remote.ContainerFormats.Selection.Builder> 
           getPatternBuilderList() {
        return getPatternFieldBuilder().getBuilderList();
      }
      private akka.protobuf.RepeatedFieldBuilder<
          akka.remote.ContainerFormats.Selection, akka.remote.ContainerFormats.Selection.Builder, akka.remote.ContainerFormats.SelectionOrBuilder> 
          getPatternFieldBuilder() {
        if (patternBuilder_ == null) {
          patternBuilder_ = new akka.protobuf.RepeatedFieldBuilder<
              akka.remote.ContainerFormats.Selection, akka.remote.ContainerFormats.Selection.Builder, akka.remote.ContainerFormats.SelectionOrBuilder>(
                  pattern_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          pattern_ = null;
        }
        return patternBuilder_;
      }

      // optional bytes messageManifest = 4;
      private akka.protobuf.ByteString messageManifest_ = akka.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes messageManifest = 4;</code>
       */
      public boolean hasMessageManifest() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bytes messageManifest = 4;</code>
       */
      public akka.protobuf.ByteString getMessageManifest() {
        return messageManifest_;
      }
      /**
       * <code>optional bytes messageManifest = 4;</code>
       */
      public Builder setMessageManifest(akka.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        messageManifest_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes messageManifest = 4;</code>
       */
      public Builder clearMessageManifest() {
        bitField0_ = (bitField0_ & ~0x00000008);
        messageManifest_ = getDefaultInstance().getMessageManifest();
        onChanged();
        return this;
      }

      // optional bool wildcardFanOut = 5;
      private boolean wildcardFanOut_ ;
      /**
       * <code>optional bool wildcardFanOut = 5;</code>
       *
       * <pre>
       * optional for pre 2.3.4 compatibility 
       * </pre>
       */
      public boolean hasWildcardFanOut() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional bool wildcardFanOut = 5;</code>
       *
       * <pre>
       * optional for pre 2.3.4 compatibility 
       * </pre>
       */
      public boolean getWildcardFanOut() {
        return wildcardFanOut_;
      }
      /**
       * <code>optional bool wildcardFanOut = 5;</code>
       *
       * <pre>
       * optional for pre 2.3.4 compatibility 
       * </pre>
       */
      public Builder setWildcardFanOut(boolean value) {
        bitField0_ |= 0x00000010;
        wildcardFanOut_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool wildcardFanOut = 5;</code>
       *
       * <pre>
       * optional for pre 2.3.4 compatibility 
       * </pre>
       */
      public Builder clearWildcardFanOut() {
        bitField0_ = (bitField0_ & ~0x00000010);
        wildcardFanOut_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:SelectionEnvelope)
    }

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

    // @@protoc_insertion_point(class_scope:SelectionEnvelope)
  }

  public interface SelectionOrBuilder
      extends akka.protobuf.MessageOrBuilder {

    // required .PatternType type = 1;
    /**
     * <code>required .PatternType type = 1;</code>
     */
    boolean hasType();
    /**
     * <code>required .PatternType type = 1;</code>
     */
    akka.remote.ContainerFormats.PatternType getType();

    // optional string matcher = 2;
    /**
     * <code>optional string matcher = 2;</code>
     */
    boolean hasMatcher();
    /**
     * <code>optional string matcher = 2;</code>
     */
    java.lang.String getMatcher();
    /**
     * <code>optional string matcher = 2;</code>
     */
    akka.protobuf.ByteString
        getMatcherBytes();
  }
  /**
   * Protobuf type {@code Selection}
   */
  public static final class Selection extends
      akka.protobuf.GeneratedMessage
      implements SelectionOrBuilder {
    // Use Selection.newBuilder() to construct.
    private Selection(akka.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Selection(boolean noInit) { this.unknownFields = akka.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public Selection getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final akka.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final akka.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Selection(
        akka.protobuf.CodedInputStream input,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws akka.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      akka.protobuf.UnknownFieldSet.Builder unknownFields =
          akka.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.remote.ContainerFormats.PatternType value = akka.remote.ContainerFormats.PatternType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                type_ = value;
              }
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              matcher_ = input.readBytes();
              break;
            }
          }
        }
      } catch (akka.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new akka.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final akka.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return akka.remote.ContainerFormats.internal_static_Selection_descriptor;
    }

    protected akka.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return akka.remote.ContainerFormats.internal_static_Selection_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              akka.remote.ContainerFormats.Selection.class, akka.remote.ContainerFormats.Selection.Builder.class);
    }

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

    @java.lang.Override
    public akka.protobuf.Parser<Selection> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // required .PatternType type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private akka.remote.ContainerFormats.PatternType type_;
    /**
     * <code>required .PatternType type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .PatternType type = 1;</code>
     */
    public akka.remote.ContainerFormats.PatternType getType() {
      return type_;
    }

    // optional string matcher = 2;
    public static final int MATCHER_FIELD_NUMBER = 2;
    private java.lang.Object matcher_;
    /**
     * <code>optional string matcher = 2;</code>
     */
    public boolean hasMatcher() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string matcher = 2;</code>
     */
    public java.lang.String getMatcher() {
      java.lang.Object ref = matcher_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        akka.protobuf.ByteString bs = 
            (akka.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          matcher_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string matcher = 2;</code>
     */
    public akka.protobuf.ByteString
        getMatcherBytes() {
      java.lang.Object ref = matcher_;
      if (ref instanceof java.lang.String) {
        akka.protobuf.ByteString b = 
            akka.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        matcher_ = b;
        return b;
      } else {
        return (akka.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      type_ = akka.remote.ContainerFormats.PatternType.PARENT;
      matcher_ = "";
    }
    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(akka.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, type_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getMatcherBytes());
      }
      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 += akka.protobuf.CodedOutputStream
          .computeEnumSize(1, type_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += akka.protobuf.CodedOutputStream
          .computeBytesSize(2, getMatcherBytes());
      }
      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.remote.ContainerFormats.Selection parseFrom(
        akka.protobuf.ByteString data)
        throws akka.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.remote.ContainerFormats.Selection parseFrom(
        akka.protobuf.ByteString data,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws akka.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.remote.ContainerFormats.Selection parseFrom(byte[] data)
        throws akka.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static akka.remote.ContainerFormats.Selection parseFrom(
        byte[] data,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws akka.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static akka.remote.ContainerFormats.Selection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.remote.ContainerFormats.Selection parseFrom(
        java.io.InputStream input,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static akka.remote.ContainerFormats.Selection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static akka.remote.ContainerFormats.Selection parseDelimitedFrom(
        java.io.InputStream input,
        akka.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static akka.remote.ContainerFormats.Selection parseFrom(
        akka.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static akka.remote.ContainerFormats.Selection parseFrom(
        akka.protobuf.CodedInputStream input,
        akka.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.remote.ContainerFormats.Selection prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        akka.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Selection}
     */
    public static final class Builder extends
        akka.protobuf.GeneratedMessage.Builder<Builder>
       implements akka.remote.ContainerFormats.SelectionOrBuilder {
      public static final akka.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return akka.remote.ContainerFormats.internal_static_Selection_descriptor;
      }

      protected akka.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return akka.remote.ContainerFormats.internal_static_Selection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                akka.remote.ContainerFormats.Selection.class, akka.remote.ContainerFormats.Selection.Builder.class);
      }

      // Construct using akka.remote.ContainerFormats.Selection.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        type_ = akka.remote.ContainerFormats.PatternType.PARENT;
        bitField0_ = (bitField0_ & ~0x00000001);
        matcher_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public akka.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return akka.remote.ContainerFormats.internal_static_Selection_descriptor;
      }

      public akka.remote.ContainerFormats.Selection getDefaultInstanceForType() {
        return akka.remote.ContainerFormats.Selection.getDefaultInstance();
      }

      public akka.remote.ContainerFormats.Selection build() {
        akka.remote.ContainerFormats.Selection result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public akka.remote.ContainerFormats.Selection buildPartial() {
        akka.remote.ContainerFormats.Selection result = new akka.remote.ContainerFormats.Selection(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.matcher_ = matcher_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(akka.protobuf.Message other) {
        if (other instanceof akka.remote.ContainerFormats.Selection) {
          return mergeFrom((akka.remote.ContainerFormats.Selection)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(akka.remote.ContainerFormats.Selection other) {
        if (other == akka.remote.ContainerFormats.Selection.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasMatcher()) {
          bitField0_ |= 0x00000002;
          matcher_ = other.matcher_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

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

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

      // required .PatternType type = 1;
      private akka.remote.ContainerFormats.PatternType type_ = akka.remote.ContainerFormats.PatternType.PARENT;
      /**
       * <code>required .PatternType type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .PatternType type = 1;</code>
       */
      public akka.remote.ContainerFormats.PatternType getType() {
        return type_;
      }
      /**
       * <code>required .PatternType type = 1;</code>
       */
      public Builder setType(akka.remote.ContainerFormats.PatternType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required .PatternType type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = akka.remote.ContainerFormats.PatternType.PARENT;
        onChanged();
        return this;
      }

      // optional string matcher = 2;
      private java.lang.Object matcher_ = "";
      /**
       * <code>optional string matcher = 2;</code>
       */
      public boolean hasMatcher() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string matcher = 2;</code>
       */
      public java.lang.String getMatcher() {
        java.lang.Object ref = matcher_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((akka.protobuf.ByteString) ref)
              .toStringUtf8();
          matcher_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string matcher = 2;</code>
       */
      public akka.protobuf.ByteString
          getMatcherBytes() {
        java.lang.Object ref = matcher_;
        if (ref instanceof String) {
          akka.protobuf.ByteString b = 
              akka.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          matcher_ = b;
          return b;
        } else {
          return (akka.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string matcher = 2;</code>
       */
      public Builder setMatcher(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        matcher_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string matcher = 2;</code>
       */
      public Builder clearMatcher() {
        bitField0_ = (bitField0_ & ~0x00000002);
        matcher_ = getDefaultInstance().getMatcher();
        onChanged();
        return this;
      }
      /**
       * <code>optional string matcher = 2;</code>
       */
      public Builder setMatcherBytes(
          akka.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        matcher_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:Selection)
    }

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

    // @@protoc_insertion_point(class_scope:Selection)
  }

  private static akka.protobuf.Descriptors.Descriptor
    internal_static_SelectionEnvelope_descriptor;
  private static
    akka.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_SelectionEnvelope_fieldAccessorTable;
  private static akka.protobuf.Descriptors.Descriptor
    internal_static_Selection_descriptor;
  private static
    akka.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_Selection_fieldAccessorTable;

  public static akka.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static akka.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\026ContainerFormats.proto\"\220\001\n\021SelectionEn" +
      "velope\022\027\n\017enclosedMessage\030\001 \002(\014\022\024\n\014seria" +
      "lizerId\030\002 \002(\005\022\033\n\007pattern\030\003 \003(\0132\n.Selecti" +
      "on\022\027\n\017messageManifest\030\004 \001(\014\022\026\n\016wildcardF" +
      "anOut\030\005 \001(\010\"8\n\tSelection\022\032\n\004type\030\001 \002(\0162\014" +
      ".PatternType\022\017\n\007matcher\030\002 \001(\t*<\n\013Pattern" +
      "Type\022\n\n\006PARENT\020\000\022\016\n\nCHILD_NAME\020\001\022\021\n\rCHIL" +
      "D_PATTERN\020\002B\017\n\013akka.remoteH\001"
    };
    akka.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new akka.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public akka.protobuf.ExtensionRegistry assignDescriptors(
            akka.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_SelectionEnvelope_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_SelectionEnvelope_fieldAccessorTable = new
            akka.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_SelectionEnvelope_descriptor,
              new java.lang.String[] { "EnclosedMessage", "SerializerId", "Pattern", "MessageManifest", "WildcardFanOut", });
          internal_static_Selection_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_Selection_fieldAccessorTable = new
            akka.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_Selection_descriptor,
              new java.lang.String[] { "Type", "Matcher", });
          return null;
        }
      };
    akka.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new akka.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
