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

package Messages;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface FileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.File)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <code>bytes payload = 2;</code>
     * @return The payload.
     */
    com.google.protobuf.ByteString getPayload();

    /**
     * <code>bool is_local = 3;</code>
     * @return The isLocal.
     */
    boolean getIsLocal();

    /**
     * <code>bool is_exported = 4;</code>
     * @return The isExported.
     */
    boolean getIsExported();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint64 time_created = 10;</code>
     * @return The timeCreated.
     */
    long getTimeCreated();

    /**
     * <code>uint64 time_modified = 11;</code>
     * @return The timeModified.
     */
    long getTimeModified();
  }
  /**
   * Protobuf type {@code Messages.File}
   */
  public static final class File extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.File)
      FileOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use File.newBuilder() to construct.
    private File(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private File() {
      name_ = "";
      payload_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_File_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_File_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.File.class, Messages.Vector.File.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

    public static final int IS_LOCAL_FIELD_NUMBER = 3;
    private boolean isLocal_;
    /**
     * <code>bool is_local = 3;</code>
     * @return The isLocal.
     */
    @java.lang.Override
    public boolean getIsLocal() {
      return isLocal_;
    }

    public static final int IS_EXPORTED_FIELD_NUMBER = 4;
    private boolean isExported_;
    /**
     * <code>bool is_exported = 4;</code>
     * @return The isExported.
     */
    @java.lang.Override
    public boolean getIsExported() {
      return isExported_;
    }

    public static final int TIME_CREATED_FIELD_NUMBER = 10;
    private long timeCreated_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint64 time_created = 10;</code>
     * @return The timeCreated.
     */
    @java.lang.Override
    public long getTimeCreated() {
      return timeCreated_;
    }

    public static final int TIME_MODIFIED_FIELD_NUMBER = 11;
    private long timeModified_;
    /**
     * <code>uint64 time_modified = 11;</code>
     * @return The timeModified.
     */
    @java.lang.Override
    public long getTimeModified() {
      return timeModified_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!payload_.isEmpty()) {
        output.writeBytes(2, payload_);
      }
      if (isLocal_ != false) {
        output.writeBool(3, isLocal_);
      }
      if (isExported_ != false) {
        output.writeBool(4, isExported_);
      }
      if (timeCreated_ != 0L) {
        output.writeUInt64(10, timeCreated_);
      }
      if (timeModified_ != 0L) {
        output.writeUInt64(11, timeModified_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!payload_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, payload_);
      }
      if (isLocal_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isLocal_);
      }
      if (isExported_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isExported_);
      }
      if (timeCreated_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(10, timeCreated_);
      }
      if (timeModified_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(11, timeModified_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.File)) {
        return super.equals(obj);
      }
      Messages.Vector.File other = (Messages.Vector.File) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getPayload()
          .equals(other.getPayload())) return false;
      if (getIsLocal()
          != other.getIsLocal()) return false;
      if (getIsExported()
          != other.getIsExported()) return false;
      if (getTimeCreated()
          != other.getTimeCreated()) return false;
      if (getTimeModified()
          != other.getTimeModified()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + PAYLOAD_FIELD_NUMBER;
      hash = (53 * hash) + getPayload().hashCode();
      hash = (37 * hash) + IS_LOCAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsLocal());
      hash = (37 * hash) + IS_EXPORTED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsExported());
      hash = (37 * hash) + TIME_CREATED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimeCreated());
      hash = (37 * hash) + TIME_MODIFIED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimeModified());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.File prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.File}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.File)
        Messages.Vector.FileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_File_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_File_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.File.class, Messages.Vector.File.Builder.class);
      }

      // Construct using Messages.Vector.File.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        payload_ = com.google.protobuf.ByteString.EMPTY;

        isLocal_ = false;

        isExported_ = false;

        timeCreated_ = 0L;

        timeModified_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_File_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.File getDefaultInstanceForType() {
        return Messages.Vector.File.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.File build() {
        Messages.Vector.File result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.File buildPartial() {
        Messages.Vector.File result = new Messages.Vector.File(this);
        result.name_ = name_;
        result.payload_ = payload_;
        result.isLocal_ = isLocal_;
        result.isExported_ = isExported_;
        result.timeCreated_ = timeCreated_;
        result.timeModified_ = timeModified_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.File other) {
        if (other == Messages.Vector.File.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getPayload() != com.google.protobuf.ByteString.EMPTY) {
          setPayload(other.getPayload());
        }
        if (other.getIsLocal() != false) {
          setIsLocal(other.getIsLocal());
        }
        if (other.getIsExported() != false) {
          setIsExported(other.getIsExported());
        }
        if (other.getTimeCreated() != 0L) {
          setTimeCreated(other.getTimeCreated());
        }
        if (other.getTimeModified() != 0L) {
          setTimeModified(other.getTimeModified());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                payload_ = input.readBytes();

                break;
              } // case 18
              case 24: {
                isLocal_ = input.readBool();

                break;
              } // case 24
              case 32: {
                isExported_ = input.readBool();

                break;
              } // case 32
              case 80: {
                timeCreated_ = input.readUInt64();

                break;
              } // case 80
              case 88: {
                timeModified_ = input.readUInt64();

                break;
              } // case 88
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString payload_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes payload = 2;</code>
       * @return The payload.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPayload() {
        return payload_;
      }
      /**
       * <code>bytes payload = 2;</code>
       * @param value The payload to set.
       * @return This builder for chaining.
       */
      public Builder setPayload(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        payload_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes payload = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPayload() {
        
        payload_ = getDefaultInstance().getPayload();
        onChanged();
        return this;
      }

      private boolean isLocal_ ;
      /**
       * <code>bool is_local = 3;</code>
       * @return The isLocal.
       */
      @java.lang.Override
      public boolean getIsLocal() {
        return isLocal_;
      }
      /**
       * <code>bool is_local = 3;</code>
       * @param value The isLocal to set.
       * @return This builder for chaining.
       */
      public Builder setIsLocal(boolean value) {
        
        isLocal_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_local = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsLocal() {
        
        isLocal_ = false;
        onChanged();
        return this;
      }

      private boolean isExported_ ;
      /**
       * <code>bool is_exported = 4;</code>
       * @return The isExported.
       */
      @java.lang.Override
      public boolean getIsExported() {
        return isExported_;
      }
      /**
       * <code>bool is_exported = 4;</code>
       * @param value The isExported to set.
       * @return This builder for chaining.
       */
      public Builder setIsExported(boolean value) {
        
        isExported_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_exported = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsExported() {
        
        isExported_ = false;
        onChanged();
        return this;
      }

      private long timeCreated_ ;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 time_created = 10;</code>
       * @return The timeCreated.
       */
      @java.lang.Override
      public long getTimeCreated() {
        return timeCreated_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 time_created = 10;</code>
       * @param value The timeCreated to set.
       * @return This builder for chaining.
       */
      public Builder setTimeCreated(long value) {
        
        timeCreated_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 time_created = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeCreated() {
        
        timeCreated_ = 0L;
        onChanged();
        return this;
      }

      private long timeModified_ ;
      /**
       * <code>uint64 time_modified = 11;</code>
       * @return The timeModified.
       */
      @java.lang.Override
      public long getTimeModified() {
        return timeModified_;
      }
      /**
       * <code>uint64 time_modified = 11;</code>
       * @param value The timeModified to set.
       * @return This builder for chaining.
       */
      public Builder setTimeModified(long value) {
        
        timeModified_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 time_modified = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeModified() {
        
        timeModified_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.File)
    }

    // @@protoc_insertion_point(class_scope:Messages.File)
    private static final Messages.Vector.File DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.File();
    }

    public static Messages.Vector.File getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.File getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DirentNodeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.DirentNode)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <code>repeated string files = 2;</code>
     * @return A list containing the files.
     */
    java.util.List<java.lang.String>
        getFilesList();
    /**
     * <code>repeated string files = 2;</code>
     * @return The count of files.
     */
    int getFilesCount();
    /**
     * <code>repeated string files = 2;</code>
     * @param index The index of the element to return.
     * @return The files at the given index.
     */
    java.lang.String getFiles(int index);
    /**
     * <code>repeated string files = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the files at the given index.
     */
    com.google.protobuf.ByteString
        getFilesBytes(int index);

    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    java.util.List<Messages.Vector.DirentNode> 
        getSubdirsList();
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    Messages.Vector.DirentNode getSubdirs(int index);
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    int getSubdirsCount();
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    java.util.List<? extends Messages.Vector.DirentNodeOrBuilder> 
        getSubdirsOrBuilderList();
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    Messages.Vector.DirentNodeOrBuilder getSubdirsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Messages.DirentNode}
   */
  public static final class DirentNode extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.DirentNode)
      DirentNodeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DirentNode.newBuilder() to construct.
    private DirentNode(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DirentNode() {
      dirname_ = "";
      files_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      subdirs_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_DirentNode_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_DirentNode_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.DirentNode.class, Messages.Vector.DirentNode.Builder.class);
    }

    public static final int DIRNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object dirname_;
    /**
     * <code>string dirname = 1;</code>
     * @return The dirname.
     */
    @java.lang.Override
    public java.lang.String getDirname() {
      java.lang.Object ref = dirname_;
      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();
        dirname_ = s;
        return s;
      }
    }
    /**
     * <code>string dirname = 1;</code>
     * @return The bytes for dirname.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDirnameBytes() {
      java.lang.Object ref = dirname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dirname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FILES_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList files_;
    /**
     * <code>repeated string files = 2;</code>
     * @return A list containing the files.
     */
    public com.google.protobuf.ProtocolStringList
        getFilesList() {
      return files_;
    }
    /**
     * <code>repeated string files = 2;</code>
     * @return The count of files.
     */
    public int getFilesCount() {
      return files_.size();
    }
    /**
     * <code>repeated string files = 2;</code>
     * @param index The index of the element to return.
     * @return The files at the given index.
     */
    public java.lang.String getFiles(int index) {
      return files_.get(index);
    }
    /**
     * <code>repeated string files = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the files at the given index.
     */
    public com.google.protobuf.ByteString
        getFilesBytes(int index) {
      return files_.getByteString(index);
    }

    public static final int SUBDIRS_FIELD_NUMBER = 3;
    private java.util.List<Messages.Vector.DirentNode> subdirs_;
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Vector.DirentNode> getSubdirsList() {
      return subdirs_;
    }
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Vector.DirentNodeOrBuilder> 
        getSubdirsOrBuilderList() {
      return subdirs_;
    }
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    @java.lang.Override
    public int getSubdirsCount() {
      return subdirs_.size();
    }
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    @java.lang.Override
    public Messages.Vector.DirentNode getSubdirs(int index) {
      return subdirs_.get(index);
    }
    /**
     * <code>repeated .Messages.DirentNode subdirs = 3;</code>
     */
    @java.lang.Override
    public Messages.Vector.DirentNodeOrBuilder getSubdirsOrBuilder(
        int index) {
      return subdirs_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dirname_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, dirname_);
      }
      for (int i = 0; i < files_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, files_.getRaw(i));
      }
      for (int i = 0; i < subdirs_.size(); i++) {
        output.writeMessage(3, subdirs_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dirname_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, dirname_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < files_.size(); i++) {
          dataSize += computeStringSizeNoTag(files_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getFilesList().size();
      }
      for (int i = 0; i < subdirs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, subdirs_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.DirentNode)) {
        return super.equals(obj);
      }
      Messages.Vector.DirentNode other = (Messages.Vector.DirentNode) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DIRNAME_FIELD_NUMBER;
      hash = (53 * hash) + getDirname().hashCode();
      if (getFilesCount() > 0) {
        hash = (37 * hash) + FILES_FIELD_NUMBER;
        hash = (53 * hash) + getFilesList().hashCode();
      }
      if (getSubdirsCount() > 0) {
        hash = (37 * hash) + SUBDIRS_FIELD_NUMBER;
        hash = (53 * hash) + getSubdirsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.DirentNode prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.DirentNode}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.DirentNode)
        Messages.Vector.DirentNodeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_DirentNode_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_DirentNode_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.DirentNode.class, Messages.Vector.DirentNode.Builder.class);
      }

      // Construct using Messages.Vector.DirentNode.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        dirname_ = "";

        files_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (subdirsBuilder_ == null) {
          subdirs_ = java.util.Collections.emptyList();
        } else {
          subdirs_ = null;
          subdirsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_DirentNode_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.DirentNode getDefaultInstanceForType() {
        return Messages.Vector.DirentNode.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.DirentNode build() {
        Messages.Vector.DirentNode result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.DirentNode buildPartial() {
        Messages.Vector.DirentNode result = new Messages.Vector.DirentNode(this);
        int from_bitField0_ = bitField0_;
        result.dirname_ = dirname_;
        if (((bitField0_ & 0x00000001) != 0)) {
          files_ = files_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.files_ = files_;
        if (subdirsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            subdirs_ = java.util.Collections.unmodifiableList(subdirs_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.subdirs_ = subdirs_;
        } else {
          result.subdirs_ = subdirsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.DirentNode other) {
        if (other == Messages.Vector.DirentNode.getDefaultInstance()) return this;
        if (!other.getDirname().isEmpty()) {
          dirname_ = other.dirname_;
          onChanged();
        }
        if (!other.files_.isEmpty()) {
          if (files_.isEmpty()) {
            files_ = other.files_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureFilesIsMutable();
            files_.addAll(other.files_);
          }
          onChanged();
        }
        if (subdirsBuilder_ == null) {
          if (!other.subdirs_.isEmpty()) {
            if (subdirs_.isEmpty()) {
              subdirs_ = other.subdirs_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSubdirsIsMutable();
              subdirs_.addAll(other.subdirs_);
            }
            onChanged();
          }
        } else {
          if (!other.subdirs_.isEmpty()) {
            if (subdirsBuilder_.isEmpty()) {
              subdirsBuilder_.dispose();
              subdirsBuilder_ = null;
              subdirs_ = other.subdirs_;
              bitField0_ = (bitField0_ & ~0x00000002);
              subdirsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSubdirsFieldBuilder() : null;
            } else {
              subdirsBuilder_.addAllMessages(other.subdirs_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                dirname_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureFilesIsMutable();
                files_.add(s);
                break;
              } // case 18
              case 26: {
                Messages.Vector.DirentNode m =
                    input.readMessage(
                        Messages.Vector.DirentNode.parser(),
                        extensionRegistry);
                if (subdirsBuilder_ == null) {
                  ensureSubdirsIsMutable();
                  subdirs_.add(m);
                } else {
                  subdirsBuilder_.addMessage(m);
                }
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object dirname_ = "";
      /**
       * <code>string dirname = 1;</code>
       * @return The dirname.
       */
      public java.lang.String getDirname() {
        java.lang.Object ref = dirname_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dirname_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string dirname = 1;</code>
       * @return The bytes for dirname.
       */
      public com.google.protobuf.ByteString
          getDirnameBytes() {
        java.lang.Object ref = dirname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dirname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string dirname = 1;</code>
       * @param value The dirname to set.
       * @return This builder for chaining.
       */
      public Builder setDirname(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        dirname_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string dirname = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirname() {
        
        dirname_ = getDefaultInstance().getDirname();
        onChanged();
        return this;
      }
      /**
       * <code>string dirname = 1;</code>
       * @param value The bytes for dirname to set.
       * @return This builder for chaining.
       */
      public Builder setDirnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        dirname_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList files_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFilesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          files_ = new com.google.protobuf.LazyStringArrayList(files_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string files = 2;</code>
       * @return A list containing the files.
       */
      public com.google.protobuf.ProtocolStringList
          getFilesList() {
        return files_.getUnmodifiableView();
      }
      /**
       * <code>repeated string files = 2;</code>
       * @return The count of files.
       */
      public int getFilesCount() {
        return files_.size();
      }
      /**
       * <code>repeated string files = 2;</code>
       * @param index The index of the element to return.
       * @return The files at the given index.
       */
      public java.lang.String getFiles(int index) {
        return files_.get(index);
      }
      /**
       * <code>repeated string files = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the files at the given index.
       */
      public com.google.protobuf.ByteString
          getFilesBytes(int index) {
        return files_.getByteString(index);
      }
      /**
       * <code>repeated string files = 2;</code>
       * @param index The index to set the value at.
       * @param value The files to set.
       * @return This builder for chaining.
       */
      public Builder setFiles(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFilesIsMutable();
        files_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string files = 2;</code>
       * @param value The files to add.
       * @return This builder for chaining.
       */
      public Builder addFiles(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFilesIsMutable();
        files_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string files = 2;</code>
       * @param values The files to add.
       * @return This builder for chaining.
       */
      public Builder addAllFiles(
          java.lang.Iterable<java.lang.String> values) {
        ensureFilesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, files_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string files = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFiles() {
        files_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string files = 2;</code>
       * @param value The bytes of the files to add.
       * @return This builder for chaining.
       */
      public Builder addFilesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureFilesIsMutable();
        files_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<Messages.Vector.DirentNode> subdirs_ =
        java.util.Collections.emptyList();
      private void ensureSubdirsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          subdirs_ = new java.util.ArrayList<Messages.Vector.DirentNode>(subdirs_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.DirentNode, Messages.Vector.DirentNode.Builder, Messages.Vector.DirentNodeOrBuilder> subdirsBuilder_;

      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public java.util.List<Messages.Vector.DirentNode> getSubdirsList() {
        if (subdirsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subdirs_);
        } else {
          return subdirsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public int getSubdirsCount() {
        if (subdirsBuilder_ == null) {
          return subdirs_.size();
        } else {
          return subdirsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Messages.Vector.DirentNode getSubdirs(int index) {
        if (subdirsBuilder_ == null) {
          return subdirs_.get(index);
        } else {
          return subdirsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder setSubdirs(
          int index, Messages.Vector.DirentNode value) {
        if (subdirsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubdirsIsMutable();
          subdirs_.set(index, value);
          onChanged();
        } else {
          subdirsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder setSubdirs(
          int index, Messages.Vector.DirentNode.Builder builderForValue) {
        if (subdirsBuilder_ == null) {
          ensureSubdirsIsMutable();
          subdirs_.set(index, builderForValue.build());
          onChanged();
        } else {
          subdirsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder addSubdirs(Messages.Vector.DirentNode value) {
        if (subdirsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubdirsIsMutable();
          subdirs_.add(value);
          onChanged();
        } else {
          subdirsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder addSubdirs(
          int index, Messages.Vector.DirentNode value) {
        if (subdirsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubdirsIsMutable();
          subdirs_.add(index, value);
          onChanged();
        } else {
          subdirsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder addSubdirs(
          Messages.Vector.DirentNode.Builder builderForValue) {
        if (subdirsBuilder_ == null) {
          ensureSubdirsIsMutable();
          subdirs_.add(builderForValue.build());
          onChanged();
        } else {
          subdirsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder addSubdirs(
          int index, Messages.Vector.DirentNode.Builder builderForValue) {
        if (subdirsBuilder_ == null) {
          ensureSubdirsIsMutable();
          subdirs_.add(index, builderForValue.build());
          onChanged();
        } else {
          subdirsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder addAllSubdirs(
          java.lang.Iterable<? extends Messages.Vector.DirentNode> values) {
        if (subdirsBuilder_ == null) {
          ensureSubdirsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, subdirs_);
          onChanged();
        } else {
          subdirsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder clearSubdirs() {
        if (subdirsBuilder_ == null) {
          subdirs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          subdirsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Builder removeSubdirs(int index) {
        if (subdirsBuilder_ == null) {
          ensureSubdirsIsMutable();
          subdirs_.remove(index);
          onChanged();
        } else {
          subdirsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Messages.Vector.DirentNode.Builder getSubdirsBuilder(
          int index) {
        return getSubdirsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Messages.Vector.DirentNodeOrBuilder getSubdirsOrBuilder(
          int index) {
        if (subdirsBuilder_ == null) {
          return subdirs_.get(index);  } else {
          return subdirsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public java.util.List<? extends Messages.Vector.DirentNodeOrBuilder> 
           getSubdirsOrBuilderList() {
        if (subdirsBuilder_ != null) {
          return subdirsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subdirs_);
        }
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Messages.Vector.DirentNode.Builder addSubdirsBuilder() {
        return getSubdirsFieldBuilder().addBuilder(
            Messages.Vector.DirentNode.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public Messages.Vector.DirentNode.Builder addSubdirsBuilder(
          int index) {
        return getSubdirsFieldBuilder().addBuilder(
            index, Messages.Vector.DirentNode.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.DirentNode subdirs = 3;</code>
       */
      public java.util.List<Messages.Vector.DirentNode.Builder> 
           getSubdirsBuilderList() {
        return getSubdirsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.DirentNode, Messages.Vector.DirentNode.Builder, Messages.Vector.DirentNodeOrBuilder> 
          getSubdirsFieldBuilder() {
        if (subdirsBuilder_ == null) {
          subdirsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Vector.DirentNode, Messages.Vector.DirentNode.Builder, Messages.Vector.DirentNodeOrBuilder>(
                  subdirs_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          subdirs_ = null;
        }
        return subdirsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.DirentNode)
    }

    // @@protoc_insertion_point(class_scope:Messages.DirentNode)
    private static final Messages.Vector.DirentNode DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.DirentNode();
    }

    public static Messages.Vector.DirentNode getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.DirentNode getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RevisionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Revision)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>uint64 major_rev = 1;</code>
     * @return The majorRev.
     */
    long getMajorRev();

    /**
     * <code>uint64 minor_rev = 2;</code>
     * @return The minorRev.
     */
    long getMinorRev();
  }
  /**
   * Protobuf type {@code Messages.Revision}
   */
  public static final class Revision extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Revision)
      RevisionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Revision.newBuilder() to construct.
    private Revision(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Revision() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_Revision_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_Revision_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.Revision.class, Messages.Vector.Revision.Builder.class);
    }

    public static final int MAJOR_REV_FIELD_NUMBER = 1;
    private long majorRev_;
    /**
     * <code>uint64 major_rev = 1;</code>
     * @return The majorRev.
     */
    @java.lang.Override
    public long getMajorRev() {
      return majorRev_;
    }

    public static final int MINOR_REV_FIELD_NUMBER = 2;
    private long minorRev_;
    /**
     * <code>uint64 minor_rev = 2;</code>
     * @return The minorRev.
     */
    @java.lang.Override
    public long getMinorRev() {
      return minorRev_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.Revision)) {
        return super.equals(obj);
      }
      Messages.Vector.Revision other = (Messages.Vector.Revision) obj;

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

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

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.Revision prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Revision}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Revision)
        Messages.Vector.RevisionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_Revision_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_Revision_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.Revision.class, Messages.Vector.Revision.Builder.class);
      }

      // Construct using Messages.Vector.Revision.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        majorRev_ = 0L;

        minorRev_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_Revision_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.Revision getDefaultInstanceForType() {
        return Messages.Vector.Revision.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.Revision build() {
        Messages.Vector.Revision result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.Revision buildPartial() {
        Messages.Vector.Revision result = new Messages.Vector.Revision(this);
        result.majorRev_ = majorRev_;
        result.minorRev_ = minorRev_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.Revision other) {
        if (other == Messages.Vector.Revision.getDefaultInstance()) return this;
        if (other.getMajorRev() != 0L) {
          setMajorRev(other.getMajorRev());
        }
        if (other.getMinorRev() != 0L) {
          setMinorRev(other.getMinorRev());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                majorRev_ = input.readUInt64();

                break;
              } // case 8
              case 16: {
                minorRev_ = input.readUInt64();

                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long majorRev_ ;
      /**
       * <code>uint64 major_rev = 1;</code>
       * @return The majorRev.
       */
      @java.lang.Override
      public long getMajorRev() {
        return majorRev_;
      }
      /**
       * <code>uint64 major_rev = 1;</code>
       * @param value The majorRev to set.
       * @return This builder for chaining.
       */
      public Builder setMajorRev(long value) {
        
        majorRev_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 major_rev = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMajorRev() {
        
        majorRev_ = 0L;
        onChanged();
        return this;
      }

      private long minorRev_ ;
      /**
       * <code>uint64 minor_rev = 2;</code>
       * @return The minorRev.
       */
      @java.lang.Override
      public long getMinorRev() {
        return minorRev_;
      }
      /**
       * <code>uint64 minor_rev = 2;</code>
       * @param value The minorRev to set.
       * @return This builder for chaining.
       */
      public Builder setMinorRev(long value) {
        
        minorRev_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint64 minor_rev = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinorRev() {
        
        minorRev_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Revision)
    }

    // @@protoc_insertion_point(class_scope:Messages.Revision)
    private static final Messages.Vector.Revision DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.Revision();
    }

    public static Messages.Vector.Revision getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.Revision getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExtremaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Extrema)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>uint32 dims = 1;</code>
     * @return The dims.
     */
    int getDims();

    /**
     * <code>repeated double min = 2 [packed = true];</code>
     * @return A list containing the min.
     */
    java.util.List<java.lang.Double> getMinList();
    /**
     * <code>repeated double min = 2 [packed = true];</code>
     * @return The count of min.
     */
    int getMinCount();
    /**
     * <code>repeated double min = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The min at the given index.
     */
    double getMin(int index);

    /**
     * <code>repeated double max = 3 [packed = true];</code>
     * @return A list containing the max.
     */
    java.util.List<java.lang.Double> getMaxList();
    /**
     * <code>repeated double max = 3 [packed = true];</code>
     * @return The count of max.
     */
    int getMaxCount();
    /**
     * <code>repeated double max = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The max at the given index.
     */
    double getMax(int index);

    /**
     * <code>bool is_set = 4;</code>
     * @return The isSet.
     */
    boolean getIsSet();
  }
  /**
   * Protobuf type {@code Messages.Extrema}
   */
  public static final class Extrema extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Extrema)
      ExtremaOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Extrema.newBuilder() to construct.
    private Extrema(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Extrema() {
      min_ = emptyDoubleList();
      max_ = emptyDoubleList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_Extrema_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_Extrema_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.Extrema.class, Messages.Vector.Extrema.Builder.class);
    }

    public static final int DIMS_FIELD_NUMBER = 1;
    private int dims_;
    /**
     * <code>uint32 dims = 1;</code>
     * @return The dims.
     */
    @java.lang.Override
    public int getDims() {
      return dims_;
    }

    public static final int MIN_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.DoubleList min_;
    /**
     * <code>repeated double min = 2 [packed = true];</code>
     * @return A list containing the min.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getMinList() {
      return min_;
    }
    /**
     * <code>repeated double min = 2 [packed = true];</code>
     * @return The count of min.
     */
    public int getMinCount() {
      return min_.size();
    }
    /**
     * <code>repeated double min = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The min at the given index.
     */
    public double getMin(int index) {
      return min_.getDouble(index);
    }
    private int minMemoizedSerializedSize = -1;

    public static final int MAX_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.DoubleList max_;
    /**
     * <code>repeated double max = 3 [packed = true];</code>
     * @return A list containing the max.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getMaxList() {
      return max_;
    }
    /**
     * <code>repeated double max = 3 [packed = true];</code>
     * @return The count of max.
     */
    public int getMaxCount() {
      return max_.size();
    }
    /**
     * <code>repeated double max = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The max at the given index.
     */
    public double getMax(int index) {
      return max_.getDouble(index);
    }
    private int maxMemoizedSerializedSize = -1;

    public static final int IS_SET_FIELD_NUMBER = 4;
    private boolean isSet_;
    /**
     * <code>bool is_set = 4;</code>
     * @return The isSet.
     */
    @java.lang.Override
    public boolean getIsSet() {
      return isSet_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (dims_ != 0) {
        output.writeUInt32(1, dims_);
      }
      if (getMinList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(minMemoizedSerializedSize);
      }
      for (int i = 0; i < min_.size(); i++) {
        output.writeDoubleNoTag(min_.getDouble(i));
      }
      if (getMaxList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(maxMemoizedSerializedSize);
      }
      for (int i = 0; i < max_.size(); i++) {
        output.writeDoubleNoTag(max_.getDouble(i));
      }
      if (isSet_ != false) {
        output.writeBool(4, isSet_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (dims_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, dims_);
      }
      {
        int dataSize = 0;
        dataSize = 8 * getMinList().size();
        size += dataSize;
        if (!getMinList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        minMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getMaxList().size();
        size += dataSize;
        if (!getMaxList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        maxMemoizedSerializedSize = dataSize;
      }
      if (isSet_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isSet_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.Extrema)) {
        return super.equals(obj);
      }
      Messages.Vector.Extrema other = (Messages.Vector.Extrema) obj;

      if (getDims()
          != other.getDims()) return false;
      if (!getMinList()
          .equals(other.getMinList())) return false;
      if (!getMaxList()
          .equals(other.getMaxList())) return false;
      if (getIsSet()
          != other.getIsSet()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DIMS_FIELD_NUMBER;
      hash = (53 * hash) + getDims();
      if (getMinCount() > 0) {
        hash = (37 * hash) + MIN_FIELD_NUMBER;
        hash = (53 * hash) + getMinList().hashCode();
      }
      if (getMaxCount() > 0) {
        hash = (37 * hash) + MAX_FIELD_NUMBER;
        hash = (53 * hash) + getMaxList().hashCode();
      }
      hash = (37 * hash) + IS_SET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsSet());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.Extrema prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Extrema}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Extrema)
        Messages.Vector.ExtremaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_Extrema_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_Extrema_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.Extrema.class, Messages.Vector.Extrema.Builder.class);
      }

      // Construct using Messages.Vector.Extrema.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        dims_ = 0;

        min_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000001);
        max_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000002);
        isSet_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_Extrema_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.Extrema getDefaultInstanceForType() {
        return Messages.Vector.Extrema.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.Extrema build() {
        Messages.Vector.Extrema result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.Extrema buildPartial() {
        Messages.Vector.Extrema result = new Messages.Vector.Extrema(this);
        int from_bitField0_ = bitField0_;
        result.dims_ = dims_;
        if (((bitField0_ & 0x00000001) != 0)) {
          min_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.min_ = min_;
        if (((bitField0_ & 0x00000002) != 0)) {
          max_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.max_ = max_;
        result.isSet_ = isSet_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.Extrema other) {
        if (other == Messages.Vector.Extrema.getDefaultInstance()) return this;
        if (other.getDims() != 0) {
          setDims(other.getDims());
        }
        if (!other.min_.isEmpty()) {
          if (min_.isEmpty()) {
            min_ = other.min_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureMinIsMutable();
            min_.addAll(other.min_);
          }
          onChanged();
        }
        if (!other.max_.isEmpty()) {
          if (max_.isEmpty()) {
            max_ = other.max_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureMaxIsMutable();
            max_.addAll(other.max_);
          }
          onChanged();
        }
        if (other.getIsSet() != false) {
          setIsSet(other.getIsSet());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                dims_ = input.readUInt32();

                break;
              } // case 8
              case 17: {
                double v = input.readDouble();
                ensureMinIsMutable();
                min_.addDouble(v);
                break;
              } // case 17
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureMinIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  min_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 18
              case 25: {
                double v = input.readDouble();
                ensureMaxIsMutable();
                max_.addDouble(v);
                break;
              } // case 25
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureMaxIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  max_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 32: {
                isSet_ = input.readBool();

                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int dims_ ;
      /**
       * <code>uint32 dims = 1;</code>
       * @return The dims.
       */
      @java.lang.Override
      public int getDims() {
        return dims_;
      }
      /**
       * <code>uint32 dims = 1;</code>
       * @param value The dims to set.
       * @return This builder for chaining.
       */
      public Builder setDims(int value) {
        
        dims_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 dims = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDims() {
        
        dims_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList min_ = emptyDoubleList();
      private void ensureMinIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          min_ = mutableCopy(min_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated double min = 2 [packed = true];</code>
       * @return A list containing the min.
       */
      public java.util.List<java.lang.Double>
          getMinList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(min_) : min_;
      }
      /**
       * <code>repeated double min = 2 [packed = true];</code>
       * @return The count of min.
       */
      public int getMinCount() {
        return min_.size();
      }
      /**
       * <code>repeated double min = 2 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The min at the given index.
       */
      public double getMin(int index) {
        return min_.getDouble(index);
      }
      /**
       * <code>repeated double min = 2 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The min to set.
       * @return This builder for chaining.
       */
      public Builder setMin(
          int index, double value) {
        ensureMinIsMutable();
        min_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double min = 2 [packed = true];</code>
       * @param value The min to add.
       * @return This builder for chaining.
       */
      public Builder addMin(double value) {
        ensureMinIsMutable();
        min_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double min = 2 [packed = true];</code>
       * @param values The min to add.
       * @return This builder for chaining.
       */
      public Builder addAllMin(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureMinIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, min_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double min = 2 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearMin() {
        min_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList max_ = emptyDoubleList();
      private void ensureMaxIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          max_ = mutableCopy(max_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated double max = 3 [packed = true];</code>
       * @return A list containing the max.
       */
      public java.util.List<java.lang.Double>
          getMaxList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(max_) : max_;
      }
      /**
       * <code>repeated double max = 3 [packed = true];</code>
       * @return The count of max.
       */
      public int getMaxCount() {
        return max_.size();
      }
      /**
       * <code>repeated double max = 3 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The max at the given index.
       */
      public double getMax(int index) {
        return max_.getDouble(index);
      }
      /**
       * <code>repeated double max = 3 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The max to set.
       * @return This builder for chaining.
       */
      public Builder setMax(
          int index, double value) {
        ensureMaxIsMutable();
        max_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double max = 3 [packed = true];</code>
       * @param value The max to add.
       * @return This builder for chaining.
       */
      public Builder addMax(double value) {
        ensureMaxIsMutable();
        max_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double max = 3 [packed = true];</code>
       * @param values The max to add.
       * @return This builder for chaining.
       */
      public Builder addAllMax(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureMaxIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, max_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double max = 3 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearMax() {
        max_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private boolean isSet_ ;
      /**
       * <code>bool is_set = 4;</code>
       * @return The isSet.
       */
      @java.lang.Override
      public boolean getIsSet() {
        return isSet_;
      }
      /**
       * <code>bool is_set = 4;</code>
       * @param value The isSet to set.
       * @return This builder for chaining.
       */
      public Builder setIsSet(boolean value) {
        
        isSet_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_set = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsSet() {
        
        isSet_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Extrema)
    }

    // @@protoc_insertion_point(class_scope:Messages.Extrema)
    private static final Messages.Vector.Extrema DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.Extrema();
    }

    public static Messages.Vector.Extrema getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.Extrema getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Vector32OrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Vector32)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <code>uint32 components = 2;</code>
     * @return The components.
     */
    int getComponents();

    /**
     * <code>bool interleaved = 3;</code>
     * @return The interleaved.
     */
    boolean getInterleaved();

    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return Whether the revision field is set.
     */
    boolean hasRevision();
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return The revision.
     */
    Messages.Vector.Revision getRevision();
    /**
     * <code>.Messages.Revision revision = 4;</code>
     */
    Messages.Vector.RevisionOrBuilder getRevisionOrBuilder();

    /**
     * <pre>
     * kg m s^2 and such string literals
     * </pre>
     *
     * <code>string units = 5;</code>
     * @return The units.
     */
    java.lang.String getUnits();
    /**
     * <pre>
     * kg m s^2 and such string literals
     * </pre>
     *
     * <code>string units = 5;</code>
     * @return The bytes for units.
     */
    com.google.protobuf.ByteString
        getUnitsBytes();

    /**
     * <code>string comment = 6;</code>
     * @return The comment.
     */
    java.lang.String getComment();
    /**
     * <code>string comment = 6;</code>
     * @return The bytes for comment.
     */
    com.google.protobuf.ByteString
        getCommentBytes();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint64 offset = 9;</code>
     * @return The offset.
     */
    long getOffset();

    /**
     * <code>repeated float values = 10 [packed = true];</code>
     * @return A list containing the values.
     */
    java.util.List<java.lang.Float> getValuesList();
    /**
     * <code>repeated float values = 10 [packed = true];</code>
     * @return The count of values.
     */
    int getValuesCount();
    /**
     * <code>repeated float values = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    float getValues(int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @return A list containing the sizeHint.
     */
    java.util.List<java.lang.Integer> getSizeHintList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @return The count of sizeHint.
     */
    int getSizeHintCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The sizeHint at the given index.
     */
    int getSizeHint(int index);
  }
  /**
   * Protobuf type {@code Messages.Vector32}
   */
  public static final class Vector32 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Vector32)
      Vector32OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Vector32.newBuilder() to construct.
    private Vector32(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Vector32() {
      name_ = "";
      units_ = "";
      comment_ = "";
      values_ = emptyFloatList();
      sizeHint_ = emptyIntList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_Vector32_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_Vector32_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.Vector32.class, Messages.Vector.Vector32.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMPONENTS_FIELD_NUMBER = 2;
    private int components_;
    /**
     * <code>uint32 components = 2;</code>
     * @return The components.
     */
    @java.lang.Override
    public int getComponents() {
      return components_;
    }

    public static final int INTERLEAVED_FIELD_NUMBER = 3;
    private boolean interleaved_;
    /**
     * <code>bool interleaved = 3;</code>
     * @return The interleaved.
     */
    @java.lang.Override
    public boolean getInterleaved() {
      return interleaved_;
    }

    public static final int REVISION_FIELD_NUMBER = 4;
    private Messages.Vector.Revision revision_;
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return Whether the revision field is set.
     */
    @java.lang.Override
    public boolean hasRevision() {
      return revision_ != null;
    }
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return The revision.
     */
    @java.lang.Override
    public Messages.Vector.Revision getRevision() {
      return revision_ == null ? Messages.Vector.Revision.getDefaultInstance() : revision_;
    }
    /**
     * <code>.Messages.Revision revision = 4;</code>
     */
    @java.lang.Override
    public Messages.Vector.RevisionOrBuilder getRevisionOrBuilder() {
      return getRevision();
    }

    public static final int UNITS_FIELD_NUMBER = 5;
    private volatile java.lang.Object units_;
    /**
     * <pre>
     * kg m s^2 and such string literals
     * </pre>
     *
     * <code>string units = 5;</code>
     * @return The units.
     */
    @java.lang.Override
    public java.lang.String getUnits() {
      java.lang.Object ref = units_;
      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();
        units_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * kg m s^2 and such string literals
     * </pre>
     *
     * <code>string units = 5;</code>
     * @return The bytes for units.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUnitsBytes() {
      java.lang.Object ref = units_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        units_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMMENT_FIELD_NUMBER = 6;
    private volatile java.lang.Object comment_;
    /**
     * <code>string comment = 6;</code>
     * @return The comment.
     */
    @java.lang.Override
    public java.lang.String getComment() {
      java.lang.Object ref = comment_;
      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();
        comment_ = s;
        return s;
      }
    }
    /**
     * <code>string comment = 6;</code>
     * @return The bytes for comment.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCommentBytes() {
      java.lang.Object ref = comment_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        comment_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OFFSET_FIELD_NUMBER = 9;
    private long offset_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint64 offset = 9;</code>
     * @return The offset.
     */
    @java.lang.Override
    public long getOffset() {
      return offset_;
    }

    public static final int VALUES_FIELD_NUMBER = 10;
    private com.google.protobuf.Internal.FloatList values_;
    /**
     * <code>repeated float values = 10 [packed = true];</code>
     * @return A list containing the values.
     */
    @java.lang.Override
    public java.util.List<java.lang.Float>
        getValuesList() {
      return values_;
    }
    /**
     * <code>repeated float values = 10 [packed = true];</code>
     * @return The count of values.
     */
    public int getValuesCount() {
      return values_.size();
    }
    /**
     * <code>repeated float values = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    public float getValues(int index) {
      return values_.getFloat(index);
    }
    private int valuesMemoizedSerializedSize = -1;

    public static final int SIZE_HINT_FIELD_NUMBER = 11;
    private com.google.protobuf.Internal.IntList sizeHint_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @return A list containing the sizeHint.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getSizeHintList() {
      return sizeHint_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @return The count of sizeHint.
     */
    public int getSizeHintCount() {
      return sizeHint_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The sizeHint at the given index.
     */
    public int getSizeHint(int index) {
      return sizeHint_.getInt(index);
    }
    private int sizeHintMemoizedSerializedSize = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (components_ != 0) {
        output.writeUInt32(2, components_);
      }
      if (interleaved_ != false) {
        output.writeBool(3, interleaved_);
      }
      if (revision_ != null) {
        output.writeMessage(4, getRevision());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(units_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, units_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(comment_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, comment_);
      }
      if (offset_ != 0L) {
        output.writeUInt64(9, offset_);
      }
      if (getValuesList().size() > 0) {
        output.writeUInt32NoTag(82);
        output.writeUInt32NoTag(valuesMemoizedSerializedSize);
      }
      for (int i = 0; i < values_.size(); i++) {
        output.writeFloatNoTag(values_.getFloat(i));
      }
      if (getSizeHintList().size() > 0) {
        output.writeUInt32NoTag(90);
        output.writeUInt32NoTag(sizeHintMemoizedSerializedSize);
      }
      for (int i = 0; i < sizeHint_.size(); i++) {
        output.writeUInt32NoTag(sizeHint_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (components_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, components_);
      }
      if (interleaved_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, interleaved_);
      }
      if (revision_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getRevision());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(units_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, units_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(comment_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, comment_);
      }
      if (offset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(9, offset_);
      }
      {
        int dataSize = 0;
        dataSize = 4 * getValuesList().size();
        size += dataSize;
        if (!getValuesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        valuesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sizeHint_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(sizeHint_.getInt(i));
        }
        size += dataSize;
        if (!getSizeHintList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        sizeHintMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.Vector32)) {
        return super.equals(obj);
      }
      Messages.Vector.Vector32 other = (Messages.Vector.Vector32) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (getComponents()
          != other.getComponents()) return false;
      if (getInterleaved()
          != other.getInterleaved()) return false;
      if (hasRevision() != other.hasRevision()) return false;
      if (hasRevision()) {
        if (!getRevision()
            .equals(other.getRevision())) return false;
      }
      if (!getUnits()
          .equals(other.getUnits())) return false;
      if (!getComment()
          .equals(other.getComment())) return false;
      if (getOffset()
          != other.getOffset()) return false;
      if (!getValuesList()
          .equals(other.getValuesList())) return false;
      if (!getSizeHintList()
          .equals(other.getSizeHintList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + COMPONENTS_FIELD_NUMBER;
      hash = (53 * hash) + getComponents();
      hash = (37 * hash) + INTERLEAVED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getInterleaved());
      if (hasRevision()) {
        hash = (37 * hash) + REVISION_FIELD_NUMBER;
        hash = (53 * hash) + getRevision().hashCode();
      }
      hash = (37 * hash) + UNITS_FIELD_NUMBER;
      hash = (53 * hash) + getUnits().hashCode();
      hash = (37 * hash) + COMMENT_FIELD_NUMBER;
      hash = (53 * hash) + getComment().hashCode();
      hash = (37 * hash) + OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getOffset());
      if (getValuesCount() > 0) {
        hash = (37 * hash) + VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getValuesList().hashCode();
      }
      if (getSizeHintCount() > 0) {
        hash = (37 * hash) + SIZE_HINT_FIELD_NUMBER;
        hash = (53 * hash) + getSizeHintList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.Vector32 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Vector32}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Vector32)
        Messages.Vector.Vector32OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_Vector32_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_Vector32_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.Vector32.class, Messages.Vector.Vector32.Builder.class);
      }

      // Construct using Messages.Vector.Vector32.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        components_ = 0;

        interleaved_ = false;

        if (revisionBuilder_ == null) {
          revision_ = null;
        } else {
          revision_ = null;
          revisionBuilder_ = null;
        }
        units_ = "";

        comment_ = "";

        offset_ = 0L;

        values_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000001);
        sizeHint_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_Vector32_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.Vector32 getDefaultInstanceForType() {
        return Messages.Vector.Vector32.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.Vector32 build() {
        Messages.Vector.Vector32 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.Vector32 buildPartial() {
        Messages.Vector.Vector32 result = new Messages.Vector.Vector32(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        result.components_ = components_;
        result.interleaved_ = interleaved_;
        if (revisionBuilder_ == null) {
          result.revision_ = revision_;
        } else {
          result.revision_ = revisionBuilder_.build();
        }
        result.units_ = units_;
        result.comment_ = comment_;
        result.offset_ = offset_;
        if (((bitField0_ & 0x00000001) != 0)) {
          values_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.values_ = values_;
        if (((bitField0_ & 0x00000002) != 0)) {
          sizeHint_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.sizeHint_ = sizeHint_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.Vector32 other) {
        if (other == Messages.Vector.Vector32.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getComponents() != 0) {
          setComponents(other.getComponents());
        }
        if (other.getInterleaved() != false) {
          setInterleaved(other.getInterleaved());
        }
        if (other.hasRevision()) {
          mergeRevision(other.getRevision());
        }
        if (!other.getUnits().isEmpty()) {
          units_ = other.units_;
          onChanged();
        }
        if (!other.getComment().isEmpty()) {
          comment_ = other.comment_;
          onChanged();
        }
        if (other.getOffset() != 0L) {
          setOffset(other.getOffset());
        }
        if (!other.values_.isEmpty()) {
          if (values_.isEmpty()) {
            values_ = other.values_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureValuesIsMutable();
            values_.addAll(other.values_);
          }
          onChanged();
        }
        if (!other.sizeHint_.isEmpty()) {
          if (sizeHint_.isEmpty()) {
            sizeHint_ = other.sizeHint_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureSizeHintIsMutable();
            sizeHint_.addAll(other.sizeHint_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                components_ = input.readUInt32();

                break;
              } // case 16
              case 24: {
                interleaved_ = input.readBool();

                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getRevisionFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 34
              case 42: {
                units_ = input.readStringRequireUtf8();

                break;
              } // case 42
              case 50: {
                comment_ = input.readStringRequireUtf8();

                break;
              } // case 50
              case 72: {
                offset_ = input.readUInt64();

                break;
              } // case 72
              case 85: {
                float v = input.readFloat();
                ensureValuesIsMutable();
                values_.addFloat(v);
                break;
              } // case 85
              case 82: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureValuesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  values_.addFloat(input.readFloat());
                }
                input.popLimit(limit);
                break;
              } // case 82
              case 88: {
                int v = input.readUInt32();
                ensureSizeHintIsMutable();
                sizeHint_.addInt(v);
                break;
              } // case 88
              case 90: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureSizeHintIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  sizeHint_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private int components_ ;
      /**
       * <code>uint32 components = 2;</code>
       * @return The components.
       */
      @java.lang.Override
      public int getComponents() {
        return components_;
      }
      /**
       * <code>uint32 components = 2;</code>
       * @param value The components to set.
       * @return This builder for chaining.
       */
      public Builder setComponents(int value) {
        
        components_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 components = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearComponents() {
        
        components_ = 0;
        onChanged();
        return this;
      }

      private boolean interleaved_ ;
      /**
       * <code>bool interleaved = 3;</code>
       * @return The interleaved.
       */
      @java.lang.Override
      public boolean getInterleaved() {
        return interleaved_;
      }
      /**
       * <code>bool interleaved = 3;</code>
       * @param value The interleaved to set.
       * @return This builder for chaining.
       */
      public Builder setInterleaved(boolean value) {
        
        interleaved_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool interleaved = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearInterleaved() {
        
        interleaved_ = false;
        onChanged();
        return this;
      }

      private Messages.Vector.Revision revision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder> revisionBuilder_;
      /**
       * <code>.Messages.Revision revision = 4;</code>
       * @return Whether the revision field is set.
       */
      public boolean hasRevision() {
        return revisionBuilder_ != null || revision_ != null;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       * @return The revision.
       */
      public Messages.Vector.Revision getRevision() {
        if (revisionBuilder_ == null) {
          return revision_ == null ? Messages.Vector.Revision.getDefaultInstance() : revision_;
        } else {
          return revisionBuilder_.getMessage();
        }
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder setRevision(Messages.Vector.Revision value) {
        if (revisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          revision_ = value;
          onChanged();
        } else {
          revisionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder setRevision(
          Messages.Vector.Revision.Builder builderForValue) {
        if (revisionBuilder_ == null) {
          revision_ = builderForValue.build();
          onChanged();
        } else {
          revisionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder mergeRevision(Messages.Vector.Revision value) {
        if (revisionBuilder_ == null) {
          if (revision_ != null) {
            revision_ =
              Messages.Vector.Revision.newBuilder(revision_).mergeFrom(value).buildPartial();
          } else {
            revision_ = value;
          }
          onChanged();
        } else {
          revisionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder clearRevision() {
        if (revisionBuilder_ == null) {
          revision_ = null;
          onChanged();
        } else {
          revision_ = null;
          revisionBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Messages.Vector.Revision.Builder getRevisionBuilder() {
        
        onChanged();
        return getRevisionFieldBuilder().getBuilder();
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Messages.Vector.RevisionOrBuilder getRevisionOrBuilder() {
        if (revisionBuilder_ != null) {
          return revisionBuilder_.getMessageOrBuilder();
        } else {
          return revision_ == null ?
              Messages.Vector.Revision.getDefaultInstance() : revision_;
        }
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder> 
          getRevisionFieldBuilder() {
        if (revisionBuilder_ == null) {
          revisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder>(
                  getRevision(),
                  getParentForChildren(),
                  isClean());
          revision_ = null;
        }
        return revisionBuilder_;
      }

      private java.lang.Object units_ = "";
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @return The units.
       */
      public java.lang.String getUnits() {
        java.lang.Object ref = units_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          units_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @return The bytes for units.
       */
      public com.google.protobuf.ByteString
          getUnitsBytes() {
        java.lang.Object ref = units_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          units_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @param value The units to set.
       * @return This builder for chaining.
       */
      public Builder setUnits(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        units_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearUnits() {
        
        units_ = getDefaultInstance().getUnits();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @param value The bytes for units to set.
       * @return This builder for chaining.
       */
      public Builder setUnitsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        units_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object comment_ = "";
      /**
       * <code>string comment = 6;</code>
       * @return The comment.
       */
      public java.lang.String getComment() {
        java.lang.Object ref = comment_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          comment_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string comment = 6;</code>
       * @return The bytes for comment.
       */
      public com.google.protobuf.ByteString
          getCommentBytes() {
        java.lang.Object ref = comment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string comment = 6;</code>
       * @param value The comment to set.
       * @return This builder for chaining.
       */
      public Builder setComment(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        comment_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string comment = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearComment() {
        
        comment_ = getDefaultInstance().getComment();
        onChanged();
        return this;
      }
      /**
       * <code>string comment = 6;</code>
       * @param value The bytes for comment to set.
       * @return This builder for chaining.
       */
      public Builder setCommentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        comment_ = value;
        onChanged();
        return this;
      }

      private long offset_ ;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(long value) {
        
        offset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        
        offset_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList values_ = emptyFloatList();
      private void ensureValuesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          values_ = mutableCopy(values_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated float values = 10 [packed = true];</code>
       * @return A list containing the values.
       */
      public java.util.List<java.lang.Float>
          getValuesList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(values_) : values_;
      }
      /**
       * <code>repeated float values = 10 [packed = true];</code>
       * @return The count of values.
       */
      public int getValuesCount() {
        return values_.size();
      }
      /**
       * <code>repeated float values = 10 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      public float getValues(int index) {
        return values_.getFloat(index);
      }
      /**
       * <code>repeated float values = 10 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The values to set.
       * @return This builder for chaining.
       */
      public Builder setValues(
          int index, float value) {
        ensureValuesIsMutable();
        values_.setFloat(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float values = 10 [packed = true];</code>
       * @param value The values to add.
       * @return This builder for chaining.
       */
      public Builder addValues(float value) {
        ensureValuesIsMutable();
        values_.addFloat(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float values = 10 [packed = true];</code>
       * @param values The values to add.
       * @return This builder for chaining.
       */
      public Builder addAllValues(
          java.lang.Iterable<? extends java.lang.Float> values) {
        ensureValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, values_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated float values = 10 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearValues() {
        values_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList sizeHint_ = emptyIntList();
      private void ensureSizeHintIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          sizeHint_ = mutableCopy(sizeHint_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @return A list containing the sizeHint.
       */
      public java.util.List<java.lang.Integer>
          getSizeHintList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(sizeHint_) : sizeHint_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @return The count of sizeHint.
       */
      public int getSizeHintCount() {
        return sizeHint_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The sizeHint at the given index.
       */
      public int getSizeHint(int index) {
        return sizeHint_.getInt(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The sizeHint to set.
       * @return This builder for chaining.
       */
      public Builder setSizeHint(
          int index, int value) {
        ensureSizeHintIsMutable();
        sizeHint_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @param value The sizeHint to add.
       * @return This builder for chaining.
       */
      public Builder addSizeHint(int value) {
        ensureSizeHintIsMutable();
        sizeHint_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @param values The sizeHint to add.
       * @return This builder for chaining.
       */
      public Builder addAllSizeHint(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSizeHintIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sizeHint_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearSizeHint() {
        sizeHint_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Vector32)
    }

    // @@protoc_insertion_point(class_scope:Messages.Vector32)
    private static final Messages.Vector.Vector32 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.Vector32();
    }

    public static Messages.Vector.Vector32 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.Vector32 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Vector64OrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Vector64)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <code>uint32 components = 2;</code>
     * @return The components.
     */
    int getComponents();

    /**
     * <code>bool interleaved = 3;</code>
     * @return The interleaved.
     */
    boolean getInterleaved();

    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return Whether the revision field is set.
     */
    boolean hasRevision();
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return The revision.
     */
    Messages.Vector.Revision getRevision();
    /**
     * <code>.Messages.Revision revision = 4;</code>
     */
    Messages.Vector.RevisionOrBuilder getRevisionOrBuilder();

    /**
     * <pre>
     * kg m s^2 and such string literals
     * </pre>
     *
     * <code>string units = 5;</code>
     * @return The units.
     */
    java.lang.String getUnits();
    /**
     * <pre>
     * kg m s^2 and such string literals
     * </pre>
     *
     * <code>string units = 5;</code>
     * @return The bytes for units.
     */
    com.google.protobuf.ByteString
        getUnitsBytes();

    /**
     * <code>string comment = 6;</code>
     * @return The comment.
     */
    java.lang.String getComment();
    /**
     * <code>string comment = 6;</code>
     * @return The bytes for comment.
     */
    com.google.protobuf.ByteString
        getCommentBytes();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint64 offset = 9;</code>
     * @return The offset.
     */
    long getOffset();

    /**
     * <code>repeated double values = 10 [packed = true];</code>
     * @return A list containing the values.
     */
    java.util.List<java.lang.Double> getValuesList();
    /**
     * <code>repeated double values = 10 [packed = true];</code>
     * @return The count of values.
     */
    int getValuesCount();
    /**
     * <code>repeated double values = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    double getValues(int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @return A list containing the sizeHint.
     */
    java.util.List<java.lang.Integer> getSizeHintList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @return The count of sizeHint.
     */
    int getSizeHintCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The sizeHint at the given index.
     */
    int getSizeHint(int index);
  }
  /**
   * Protobuf type {@code Messages.Vector64}
   */
  public static final class Vector64 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Vector64)
      Vector64OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Vector64.newBuilder() to construct.
    private Vector64(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Vector64() {
      name_ = "";
      units_ = "";
      comment_ = "";
      values_ = emptyDoubleList();
      sizeHint_ = emptyIntList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_Vector64_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_Vector64_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.Vector64.class, Messages.Vector.Vector64.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMPONENTS_FIELD_NUMBER = 2;
    private int components_;
    /**
     * <code>uint32 components = 2;</code>
     * @return The components.
     */
    @java.lang.Override
    public int getComponents() {
      return components_;
    }

    public static final int INTERLEAVED_FIELD_NUMBER = 3;
    private boolean interleaved_;
    /**
     * <code>bool interleaved = 3;</code>
     * @return The interleaved.
     */
    @java.lang.Override
    public boolean getInterleaved() {
      return interleaved_;
    }

    public static final int REVISION_FIELD_NUMBER = 4;
    private Messages.Vector.Revision revision_;
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return Whether the revision field is set.
     */
    @java.lang.Override
    public boolean hasRevision() {
      return revision_ != null;
    }
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return The revision.
     */
    @java.lang.Override
    public Messages.Vector.Revision getRevision() {
      return revision_ == null ? Messages.Vector.Revision.getDefaultInstance() : revision_;
    }
    /**
     * <code>.Messages.Revision revision = 4;</code>
     */
    @java.lang.Override
    public Messages.Vector.RevisionOrBuilder getRevisionOrBuilder() {
      return getRevision();
    }

    public static final int UNITS_FIELD_NUMBER = 5;
    private volatile java.lang.Object units_;
    /**
     * <pre>
     * kg m s^2 and such string literals
     * </pre>
     *
     * <code>string units = 5;</code>
     * @return The units.
     */
    @java.lang.Override
    public java.lang.String getUnits() {
      java.lang.Object ref = units_;
      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();
        units_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * kg m s^2 and such string literals
     * </pre>
     *
     * <code>string units = 5;</code>
     * @return The bytes for units.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUnitsBytes() {
      java.lang.Object ref = units_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        units_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMMENT_FIELD_NUMBER = 6;
    private volatile java.lang.Object comment_;
    /**
     * <code>string comment = 6;</code>
     * @return The comment.
     */
    @java.lang.Override
    public java.lang.String getComment() {
      java.lang.Object ref = comment_;
      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();
        comment_ = s;
        return s;
      }
    }
    /**
     * <code>string comment = 6;</code>
     * @return The bytes for comment.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCommentBytes() {
      java.lang.Object ref = comment_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        comment_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OFFSET_FIELD_NUMBER = 9;
    private long offset_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint64 offset = 9;</code>
     * @return The offset.
     */
    @java.lang.Override
    public long getOffset() {
      return offset_;
    }

    public static final int VALUES_FIELD_NUMBER = 10;
    private com.google.protobuf.Internal.DoubleList values_;
    /**
     * <code>repeated double values = 10 [packed = true];</code>
     * @return A list containing the values.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getValuesList() {
      return values_;
    }
    /**
     * <code>repeated double values = 10 [packed = true];</code>
     * @return The count of values.
     */
    public int getValuesCount() {
      return values_.size();
    }
    /**
     * <code>repeated double values = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    public double getValues(int index) {
      return values_.getDouble(index);
    }
    private int valuesMemoizedSerializedSize = -1;

    public static final int SIZE_HINT_FIELD_NUMBER = 11;
    private com.google.protobuf.Internal.IntList sizeHint_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @return A list containing the sizeHint.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getSizeHintList() {
      return sizeHint_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @return The count of sizeHint.
     */
    public int getSizeHintCount() {
      return sizeHint_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated uint32 size_hint = 11 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The sizeHint at the given index.
     */
    public int getSizeHint(int index) {
      return sizeHint_.getInt(index);
    }
    private int sizeHintMemoizedSerializedSize = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (components_ != 0) {
        output.writeUInt32(2, components_);
      }
      if (interleaved_ != false) {
        output.writeBool(3, interleaved_);
      }
      if (revision_ != null) {
        output.writeMessage(4, getRevision());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(units_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, units_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(comment_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, comment_);
      }
      if (offset_ != 0L) {
        output.writeUInt64(9, offset_);
      }
      if (getValuesList().size() > 0) {
        output.writeUInt32NoTag(82);
        output.writeUInt32NoTag(valuesMemoizedSerializedSize);
      }
      for (int i = 0; i < values_.size(); i++) {
        output.writeDoubleNoTag(values_.getDouble(i));
      }
      if (getSizeHintList().size() > 0) {
        output.writeUInt32NoTag(90);
        output.writeUInt32NoTag(sizeHintMemoizedSerializedSize);
      }
      for (int i = 0; i < sizeHint_.size(); i++) {
        output.writeUInt32NoTag(sizeHint_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (components_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, components_);
      }
      if (interleaved_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, interleaved_);
      }
      if (revision_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getRevision());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(units_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, units_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(comment_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, comment_);
      }
      if (offset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(9, offset_);
      }
      {
        int dataSize = 0;
        dataSize = 8 * getValuesList().size();
        size += dataSize;
        if (!getValuesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        valuesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sizeHint_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(sizeHint_.getInt(i));
        }
        size += dataSize;
        if (!getSizeHintList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        sizeHintMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.Vector64)) {
        return super.equals(obj);
      }
      Messages.Vector.Vector64 other = (Messages.Vector.Vector64) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (getComponents()
          != other.getComponents()) return false;
      if (getInterleaved()
          != other.getInterleaved()) return false;
      if (hasRevision() != other.hasRevision()) return false;
      if (hasRevision()) {
        if (!getRevision()
            .equals(other.getRevision())) return false;
      }
      if (!getUnits()
          .equals(other.getUnits())) return false;
      if (!getComment()
          .equals(other.getComment())) return false;
      if (getOffset()
          != other.getOffset()) return false;
      if (!getValuesList()
          .equals(other.getValuesList())) return false;
      if (!getSizeHintList()
          .equals(other.getSizeHintList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + COMPONENTS_FIELD_NUMBER;
      hash = (53 * hash) + getComponents();
      hash = (37 * hash) + INTERLEAVED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getInterleaved());
      if (hasRevision()) {
        hash = (37 * hash) + REVISION_FIELD_NUMBER;
        hash = (53 * hash) + getRevision().hashCode();
      }
      hash = (37 * hash) + UNITS_FIELD_NUMBER;
      hash = (53 * hash) + getUnits().hashCode();
      hash = (37 * hash) + COMMENT_FIELD_NUMBER;
      hash = (53 * hash) + getComment().hashCode();
      hash = (37 * hash) + OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getOffset());
      if (getValuesCount() > 0) {
        hash = (37 * hash) + VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getValuesList().hashCode();
      }
      if (getSizeHintCount() > 0) {
        hash = (37 * hash) + SIZE_HINT_FIELD_NUMBER;
        hash = (53 * hash) + getSizeHintList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.Vector64 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Vector64}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Vector64)
        Messages.Vector.Vector64OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_Vector64_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_Vector64_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.Vector64.class, Messages.Vector.Vector64.Builder.class);
      }

      // Construct using Messages.Vector.Vector64.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        components_ = 0;

        interleaved_ = false;

        if (revisionBuilder_ == null) {
          revision_ = null;
        } else {
          revision_ = null;
          revisionBuilder_ = null;
        }
        units_ = "";

        comment_ = "";

        offset_ = 0L;

        values_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000001);
        sizeHint_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_Vector64_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.Vector64 getDefaultInstanceForType() {
        return Messages.Vector.Vector64.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.Vector64 build() {
        Messages.Vector.Vector64 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.Vector64 buildPartial() {
        Messages.Vector.Vector64 result = new Messages.Vector.Vector64(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        result.components_ = components_;
        result.interleaved_ = interleaved_;
        if (revisionBuilder_ == null) {
          result.revision_ = revision_;
        } else {
          result.revision_ = revisionBuilder_.build();
        }
        result.units_ = units_;
        result.comment_ = comment_;
        result.offset_ = offset_;
        if (((bitField0_ & 0x00000001) != 0)) {
          values_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.values_ = values_;
        if (((bitField0_ & 0x00000002) != 0)) {
          sizeHint_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.sizeHint_ = sizeHint_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.Vector64 other) {
        if (other == Messages.Vector.Vector64.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getComponents() != 0) {
          setComponents(other.getComponents());
        }
        if (other.getInterleaved() != false) {
          setInterleaved(other.getInterleaved());
        }
        if (other.hasRevision()) {
          mergeRevision(other.getRevision());
        }
        if (!other.getUnits().isEmpty()) {
          units_ = other.units_;
          onChanged();
        }
        if (!other.getComment().isEmpty()) {
          comment_ = other.comment_;
          onChanged();
        }
        if (other.getOffset() != 0L) {
          setOffset(other.getOffset());
        }
        if (!other.values_.isEmpty()) {
          if (values_.isEmpty()) {
            values_ = other.values_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureValuesIsMutable();
            values_.addAll(other.values_);
          }
          onChanged();
        }
        if (!other.sizeHint_.isEmpty()) {
          if (sizeHint_.isEmpty()) {
            sizeHint_ = other.sizeHint_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureSizeHintIsMutable();
            sizeHint_.addAll(other.sizeHint_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                components_ = input.readUInt32();

                break;
              } // case 16
              case 24: {
                interleaved_ = input.readBool();

                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getRevisionFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 34
              case 42: {
                units_ = input.readStringRequireUtf8();

                break;
              } // case 42
              case 50: {
                comment_ = input.readStringRequireUtf8();

                break;
              } // case 50
              case 72: {
                offset_ = input.readUInt64();

                break;
              } // case 72
              case 81: {
                double v = input.readDouble();
                ensureValuesIsMutable();
                values_.addDouble(v);
                break;
              } // case 81
              case 82: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureValuesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  values_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 82
              case 88: {
                int v = input.readUInt32();
                ensureSizeHintIsMutable();
                sizeHint_.addInt(v);
                break;
              } // case 88
              case 90: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureSizeHintIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  sizeHint_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private int components_ ;
      /**
       * <code>uint32 components = 2;</code>
       * @return The components.
       */
      @java.lang.Override
      public int getComponents() {
        return components_;
      }
      /**
       * <code>uint32 components = 2;</code>
       * @param value The components to set.
       * @return This builder for chaining.
       */
      public Builder setComponents(int value) {
        
        components_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 components = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearComponents() {
        
        components_ = 0;
        onChanged();
        return this;
      }

      private boolean interleaved_ ;
      /**
       * <code>bool interleaved = 3;</code>
       * @return The interleaved.
       */
      @java.lang.Override
      public boolean getInterleaved() {
        return interleaved_;
      }
      /**
       * <code>bool interleaved = 3;</code>
       * @param value The interleaved to set.
       * @return This builder for chaining.
       */
      public Builder setInterleaved(boolean value) {
        
        interleaved_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool interleaved = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearInterleaved() {
        
        interleaved_ = false;
        onChanged();
        return this;
      }

      private Messages.Vector.Revision revision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder> revisionBuilder_;
      /**
       * <code>.Messages.Revision revision = 4;</code>
       * @return Whether the revision field is set.
       */
      public boolean hasRevision() {
        return revisionBuilder_ != null || revision_ != null;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       * @return The revision.
       */
      public Messages.Vector.Revision getRevision() {
        if (revisionBuilder_ == null) {
          return revision_ == null ? Messages.Vector.Revision.getDefaultInstance() : revision_;
        } else {
          return revisionBuilder_.getMessage();
        }
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder setRevision(Messages.Vector.Revision value) {
        if (revisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          revision_ = value;
          onChanged();
        } else {
          revisionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder setRevision(
          Messages.Vector.Revision.Builder builderForValue) {
        if (revisionBuilder_ == null) {
          revision_ = builderForValue.build();
          onChanged();
        } else {
          revisionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder mergeRevision(Messages.Vector.Revision value) {
        if (revisionBuilder_ == null) {
          if (revision_ != null) {
            revision_ =
              Messages.Vector.Revision.newBuilder(revision_).mergeFrom(value).buildPartial();
          } else {
            revision_ = value;
          }
          onChanged();
        } else {
          revisionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder clearRevision() {
        if (revisionBuilder_ == null) {
          revision_ = null;
          onChanged();
        } else {
          revision_ = null;
          revisionBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Messages.Vector.Revision.Builder getRevisionBuilder() {
        
        onChanged();
        return getRevisionFieldBuilder().getBuilder();
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Messages.Vector.RevisionOrBuilder getRevisionOrBuilder() {
        if (revisionBuilder_ != null) {
          return revisionBuilder_.getMessageOrBuilder();
        } else {
          return revision_ == null ?
              Messages.Vector.Revision.getDefaultInstance() : revision_;
        }
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder> 
          getRevisionFieldBuilder() {
        if (revisionBuilder_ == null) {
          revisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder>(
                  getRevision(),
                  getParentForChildren(),
                  isClean());
          revision_ = null;
        }
        return revisionBuilder_;
      }

      private java.lang.Object units_ = "";
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @return The units.
       */
      public java.lang.String getUnits() {
        java.lang.Object ref = units_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          units_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @return The bytes for units.
       */
      public com.google.protobuf.ByteString
          getUnitsBytes() {
        java.lang.Object ref = units_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          units_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @param value The units to set.
       * @return This builder for chaining.
       */
      public Builder setUnits(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        units_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearUnits() {
        
        units_ = getDefaultInstance().getUnits();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kg m s^2 and such string literals
       * </pre>
       *
       * <code>string units = 5;</code>
       * @param value The bytes for units to set.
       * @return This builder for chaining.
       */
      public Builder setUnitsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        units_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object comment_ = "";
      /**
       * <code>string comment = 6;</code>
       * @return The comment.
       */
      public java.lang.String getComment() {
        java.lang.Object ref = comment_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          comment_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string comment = 6;</code>
       * @return The bytes for comment.
       */
      public com.google.protobuf.ByteString
          getCommentBytes() {
        java.lang.Object ref = comment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string comment = 6;</code>
       * @param value The comment to set.
       * @return This builder for chaining.
       */
      public Builder setComment(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        comment_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string comment = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearComment() {
        
        comment_ = getDefaultInstance().getComment();
        onChanged();
        return this;
      }
      /**
       * <code>string comment = 6;</code>
       * @param value The bytes for comment to set.
       * @return This builder for chaining.
       */
      public Builder setCommentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        comment_ = value;
        onChanged();
        return this;
      }

      private long offset_ ;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(long value) {
        
        offset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        
        offset_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList values_ = emptyDoubleList();
      private void ensureValuesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          values_ = mutableCopy(values_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated double values = 10 [packed = true];</code>
       * @return A list containing the values.
       */
      public java.util.List<java.lang.Double>
          getValuesList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(values_) : values_;
      }
      /**
       * <code>repeated double values = 10 [packed = true];</code>
       * @return The count of values.
       */
      public int getValuesCount() {
        return values_.size();
      }
      /**
       * <code>repeated double values = 10 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      public double getValues(int index) {
        return values_.getDouble(index);
      }
      /**
       * <code>repeated double values = 10 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The values to set.
       * @return This builder for chaining.
       */
      public Builder setValues(
          int index, double value) {
        ensureValuesIsMutable();
        values_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double values = 10 [packed = true];</code>
       * @param value The values to add.
       * @return This builder for chaining.
       */
      public Builder addValues(double value) {
        ensureValuesIsMutable();
        values_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double values = 10 [packed = true];</code>
       * @param values The values to add.
       * @return This builder for chaining.
       */
      public Builder addAllValues(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, values_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double values = 10 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearValues() {
        values_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList sizeHint_ = emptyIntList();
      private void ensureSizeHintIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          sizeHint_ = mutableCopy(sizeHint_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @return A list containing the sizeHint.
       */
      public java.util.List<java.lang.Integer>
          getSizeHintList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(sizeHint_) : sizeHint_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @return The count of sizeHint.
       */
      public int getSizeHintCount() {
        return sizeHint_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The sizeHint at the given index.
       */
      public int getSizeHint(int index) {
        return sizeHint_.getInt(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The sizeHint to set.
       * @return This builder for chaining.
       */
      public Builder setSizeHint(
          int index, int value) {
        ensureSizeHintIsMutable();
        sizeHint_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @param value The sizeHint to add.
       * @return This builder for chaining.
       */
      public Builder addSizeHint(int value) {
        ensureSizeHintIsMutable();
        sizeHint_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @param values The sizeHint to add.
       * @return This builder for chaining.
       */
      public Builder addAllSizeHint(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSizeHintIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sizeHint_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated uint32 size_hint = 11 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearSizeHint() {
        sizeHint_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Vector64)
    }

    // @@protoc_insertion_point(class_scope:Messages.Vector64)
    private static final Messages.Vector.Vector64 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.Vector64();
    }

    public static Messages.Vector.Vector64 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.Vector64 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SparseMatrixOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.SparseMatrix)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <code>repeated uint32 size_hint = 2 [packed = true];</code>
     * @return A list containing the sizeHint.
     */
    java.util.List<java.lang.Integer> getSizeHintList();
    /**
     * <code>repeated uint32 size_hint = 2 [packed = true];</code>
     * @return The count of sizeHint.
     */
    int getSizeHintCount();
    /**
     * <code>repeated uint32 size_hint = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The sizeHint at the given index.
     */
    int getSizeHint(int index);

    /**
     * <pre>
     *1:1 mapping between indices and values
     * </pre>
     *
     * <code>repeated uint32 indices = 3 [packed = true];</code>
     * @return A list containing the indices.
     */
    java.util.List<java.lang.Integer> getIndicesList();
    /**
     * <pre>
     *1:1 mapping between indices and values
     * </pre>
     *
     * <code>repeated uint32 indices = 3 [packed = true];</code>
     * @return The count of indices.
     */
    int getIndicesCount();
    /**
     * <pre>
     *1:1 mapping between indices and values
     * </pre>
     *
     * <code>repeated uint32 indices = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The indices at the given index.
     */
    int getIndices(int index);

    /**
     * <code>repeated double values = 4 [packed = true];</code>
     * @return A list containing the values.
     */
    java.util.List<java.lang.Double> getValuesList();
    /**
     * <code>repeated double values = 4 [packed = true];</code>
     * @return The count of values.
     */
    int getValuesCount();
    /**
     * <code>repeated double values = 4 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    double getValues(int index);

    /**
     * <code>.Messages.Extrema bounds = 5;</code>
     * @return Whether the bounds field is set.
     */
    boolean hasBounds();
    /**
     * <code>.Messages.Extrema bounds = 5;</code>
     * @return The bounds.
     */
    Messages.Vector.Extrema getBounds();
    /**
     * <code>.Messages.Extrema bounds = 5;</code>
     */
    Messages.Vector.ExtremaOrBuilder getBoundsOrBuilder();
  }
  /**
   * Protobuf type {@code Messages.SparseMatrix}
   */
  public static final class SparseMatrix extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.SparseMatrix)
      SparseMatrixOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SparseMatrix.newBuilder() to construct.
    private SparseMatrix(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SparseMatrix() {
      name_ = "";
      sizeHint_ = emptyIntList();
      indices_ = emptyIntList();
      values_ = emptyDoubleList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_SparseMatrix_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_SparseMatrix_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.SparseMatrix.class, Messages.Vector.SparseMatrix.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SIZE_HINT_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.IntList sizeHint_;
    /**
     * <code>repeated uint32 size_hint = 2 [packed = true];</code>
     * @return A list containing the sizeHint.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getSizeHintList() {
      return sizeHint_;
    }
    /**
     * <code>repeated uint32 size_hint = 2 [packed = true];</code>
     * @return The count of sizeHint.
     */
    public int getSizeHintCount() {
      return sizeHint_.size();
    }
    /**
     * <code>repeated uint32 size_hint = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The sizeHint at the given index.
     */
    public int getSizeHint(int index) {
      return sizeHint_.getInt(index);
    }
    private int sizeHintMemoizedSerializedSize = -1;

    public static final int INDICES_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.IntList indices_;
    /**
     * <pre>
     *1:1 mapping between indices and values
     * </pre>
     *
     * <code>repeated uint32 indices = 3 [packed = true];</code>
     * @return A list containing the indices.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getIndicesList() {
      return indices_;
    }
    /**
     * <pre>
     *1:1 mapping between indices and values
     * </pre>
     *
     * <code>repeated uint32 indices = 3 [packed = true];</code>
     * @return The count of indices.
     */
    public int getIndicesCount() {
      return indices_.size();
    }
    /**
     * <pre>
     *1:1 mapping between indices and values
     * </pre>
     *
     * <code>repeated uint32 indices = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The indices at the given index.
     */
    public int getIndices(int index) {
      return indices_.getInt(index);
    }
    private int indicesMemoizedSerializedSize = -1;

    public static final int VALUES_FIELD_NUMBER = 4;
    private com.google.protobuf.Internal.DoubleList values_;
    /**
     * <code>repeated double values = 4 [packed = true];</code>
     * @return A list containing the values.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getValuesList() {
      return values_;
    }
    /**
     * <code>repeated double values = 4 [packed = true];</code>
     * @return The count of values.
     */
    public int getValuesCount() {
      return values_.size();
    }
    /**
     * <code>repeated double values = 4 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    public double getValues(int index) {
      return values_.getDouble(index);
    }
    private int valuesMemoizedSerializedSize = -1;

    public static final int BOUNDS_FIELD_NUMBER = 5;
    private Messages.Vector.Extrema bounds_;
    /**
     * <code>.Messages.Extrema bounds = 5;</code>
     * @return Whether the bounds field is set.
     */
    @java.lang.Override
    public boolean hasBounds() {
      return bounds_ != null;
    }
    /**
     * <code>.Messages.Extrema bounds = 5;</code>
     * @return The bounds.
     */
    @java.lang.Override
    public Messages.Vector.Extrema getBounds() {
      return bounds_ == null ? Messages.Vector.Extrema.getDefaultInstance() : bounds_;
    }
    /**
     * <code>.Messages.Extrema bounds = 5;</code>
     */
    @java.lang.Override
    public Messages.Vector.ExtremaOrBuilder getBoundsOrBuilder() {
      return getBounds();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (getSizeHintList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(sizeHintMemoizedSerializedSize);
      }
      for (int i = 0; i < sizeHint_.size(); i++) {
        output.writeUInt32NoTag(sizeHint_.getInt(i));
      }
      if (getIndicesList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(indicesMemoizedSerializedSize);
      }
      for (int i = 0; i < indices_.size(); i++) {
        output.writeUInt32NoTag(indices_.getInt(i));
      }
      if (getValuesList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(valuesMemoizedSerializedSize);
      }
      for (int i = 0; i < values_.size(); i++) {
        output.writeDoubleNoTag(values_.getDouble(i));
      }
      if (bounds_ != null) {
        output.writeMessage(5, getBounds());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sizeHint_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(sizeHint_.getInt(i));
        }
        size += dataSize;
        if (!getSizeHintList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        sizeHintMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < indices_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(indices_.getInt(i));
        }
        size += dataSize;
        if (!getIndicesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        indicesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getValuesList().size();
        size += dataSize;
        if (!getValuesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        valuesMemoizedSerializedSize = dataSize;
      }
      if (bounds_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getBounds());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.SparseMatrix)) {
        return super.equals(obj);
      }
      Messages.Vector.SparseMatrix other = (Messages.Vector.SparseMatrix) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getSizeHintList()
          .equals(other.getSizeHintList())) return false;
      if (!getIndicesList()
          .equals(other.getIndicesList())) return false;
      if (!getValuesList()
          .equals(other.getValuesList())) return false;
      if (hasBounds() != other.hasBounds()) return false;
      if (hasBounds()) {
        if (!getBounds()
            .equals(other.getBounds())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getSizeHintCount() > 0) {
        hash = (37 * hash) + SIZE_HINT_FIELD_NUMBER;
        hash = (53 * hash) + getSizeHintList().hashCode();
      }
      if (getIndicesCount() > 0) {
        hash = (37 * hash) + INDICES_FIELD_NUMBER;
        hash = (53 * hash) + getIndicesList().hashCode();
      }
      if (getValuesCount() > 0) {
        hash = (37 * hash) + VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getValuesList().hashCode();
      }
      if (hasBounds()) {
        hash = (37 * hash) + BOUNDS_FIELD_NUMBER;
        hash = (53 * hash) + getBounds().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.SparseMatrix prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.SparseMatrix}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.SparseMatrix)
        Messages.Vector.SparseMatrixOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_SparseMatrix_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_SparseMatrix_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.SparseMatrix.class, Messages.Vector.SparseMatrix.Builder.class);
      }

      // Construct using Messages.Vector.SparseMatrix.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        sizeHint_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        indices_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        values_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000004);
        if (boundsBuilder_ == null) {
          bounds_ = null;
        } else {
          bounds_ = null;
          boundsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_SparseMatrix_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.SparseMatrix getDefaultInstanceForType() {
        return Messages.Vector.SparseMatrix.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.SparseMatrix build() {
        Messages.Vector.SparseMatrix result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.SparseMatrix buildPartial() {
        Messages.Vector.SparseMatrix result = new Messages.Vector.SparseMatrix(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (((bitField0_ & 0x00000001) != 0)) {
          sizeHint_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.sizeHint_ = sizeHint_;
        if (((bitField0_ & 0x00000002) != 0)) {
          indices_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.indices_ = indices_;
        if (((bitField0_ & 0x00000004) != 0)) {
          values_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.values_ = values_;
        if (boundsBuilder_ == null) {
          result.bounds_ = bounds_;
        } else {
          result.bounds_ = boundsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.SparseMatrix other) {
        if (other == Messages.Vector.SparseMatrix.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.sizeHint_.isEmpty()) {
          if (sizeHint_.isEmpty()) {
            sizeHint_ = other.sizeHint_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSizeHintIsMutable();
            sizeHint_.addAll(other.sizeHint_);
          }
          onChanged();
        }
        if (!other.indices_.isEmpty()) {
          if (indices_.isEmpty()) {
            indices_ = other.indices_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureIndicesIsMutable();
            indices_.addAll(other.indices_);
          }
          onChanged();
        }
        if (!other.values_.isEmpty()) {
          if (values_.isEmpty()) {
            values_ = other.values_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureValuesIsMutable();
            values_.addAll(other.values_);
          }
          onChanged();
        }
        if (other.hasBounds()) {
          mergeBounds(other.getBounds());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                int v = input.readUInt32();
                ensureSizeHintIsMutable();
                sizeHint_.addInt(v);
                break;
              } // case 16
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureSizeHintIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  sizeHint_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 18
              case 24: {
                int v = input.readUInt32();
                ensureIndicesIsMutable();
                indices_.addInt(v);
                break;
              } // case 24
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureIndicesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  indices_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 33: {
                double v = input.readDouble();
                ensureValuesIsMutable();
                values_.addDouble(v);
                break;
              } // case 33
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureValuesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  values_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getBoundsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList sizeHint_ = emptyIntList();
      private void ensureSizeHintIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sizeHint_ = mutableCopy(sizeHint_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated uint32 size_hint = 2 [packed = true];</code>
       * @return A list containing the sizeHint.
       */
      public java.util.List<java.lang.Integer>
          getSizeHintList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(sizeHint_) : sizeHint_;
      }
      /**
       * <code>repeated uint32 size_hint = 2 [packed = true];</code>
       * @return The count of sizeHint.
       */
      public int getSizeHintCount() {
        return sizeHint_.size();
      }
      /**
       * <code>repeated uint32 size_hint = 2 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The sizeHint at the given index.
       */
      public int getSizeHint(int index) {
        return sizeHint_.getInt(index);
      }
      /**
       * <code>repeated uint32 size_hint = 2 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The sizeHint to set.
       * @return This builder for chaining.
       */
      public Builder setSizeHint(
          int index, int value) {
        ensureSizeHintIsMutable();
        sizeHint_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 size_hint = 2 [packed = true];</code>
       * @param value The sizeHint to add.
       * @return This builder for chaining.
       */
      public Builder addSizeHint(int value) {
        ensureSizeHintIsMutable();
        sizeHint_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 size_hint = 2 [packed = true];</code>
       * @param values The sizeHint to add.
       * @return This builder for chaining.
       */
      public Builder addAllSizeHint(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSizeHintIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sizeHint_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 size_hint = 2 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearSizeHint() {
        sizeHint_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList indices_ = emptyIntList();
      private void ensureIndicesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          indices_ = mutableCopy(indices_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       *1:1 mapping between indices and values
       * </pre>
       *
       * <code>repeated uint32 indices = 3 [packed = true];</code>
       * @return A list containing the indices.
       */
      public java.util.List<java.lang.Integer>
          getIndicesList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(indices_) : indices_;
      }
      /**
       * <pre>
       *1:1 mapping between indices and values
       * </pre>
       *
       * <code>repeated uint32 indices = 3 [packed = true];</code>
       * @return The count of indices.
       */
      public int getIndicesCount() {
        return indices_.size();
      }
      /**
       * <pre>
       *1:1 mapping between indices and values
       * </pre>
       *
       * <code>repeated uint32 indices = 3 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The indices at the given index.
       */
      public int getIndices(int index) {
        return indices_.getInt(index);
      }
      /**
       * <pre>
       *1:1 mapping between indices and values
       * </pre>
       *
       * <code>repeated uint32 indices = 3 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The indices to set.
       * @return This builder for chaining.
       */
      public Builder setIndices(
          int index, int value) {
        ensureIndicesIsMutable();
        indices_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *1:1 mapping between indices and values
       * </pre>
       *
       * <code>repeated uint32 indices = 3 [packed = true];</code>
       * @param value The indices to add.
       * @return This builder for chaining.
       */
      public Builder addIndices(int value) {
        ensureIndicesIsMutable();
        indices_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *1:1 mapping between indices and values
       * </pre>
       *
       * <code>repeated uint32 indices = 3 [packed = true];</code>
       * @param values The indices to add.
       * @return This builder for chaining.
       */
      public Builder addAllIndices(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureIndicesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, indices_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *1:1 mapping between indices and values
       * </pre>
       *
       * <code>repeated uint32 indices = 3 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearIndices() {
        indices_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList values_ = emptyDoubleList();
      private void ensureValuesIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          values_ = mutableCopy(values_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated double values = 4 [packed = true];</code>
       * @return A list containing the values.
       */
      public java.util.List<java.lang.Double>
          getValuesList() {
        return ((bitField0_ & 0x00000004) != 0) ?
                 java.util.Collections.unmodifiableList(values_) : values_;
      }
      /**
       * <code>repeated double values = 4 [packed = true];</code>
       * @return The count of values.
       */
      public int getValuesCount() {
        return values_.size();
      }
      /**
       * <code>repeated double values = 4 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      public double getValues(int index) {
        return values_.getDouble(index);
      }
      /**
       * <code>repeated double values = 4 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The values to set.
       * @return This builder for chaining.
       */
      public Builder setValues(
          int index, double value) {
        ensureValuesIsMutable();
        values_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double values = 4 [packed = true];</code>
       * @param value The values to add.
       * @return This builder for chaining.
       */
      public Builder addValues(double value) {
        ensureValuesIsMutable();
        values_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double values = 4 [packed = true];</code>
       * @param values The values to add.
       * @return This builder for chaining.
       */
      public Builder addAllValues(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, values_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double values = 4 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearValues() {
        values_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private Messages.Vector.Extrema bounds_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Extrema, Messages.Vector.Extrema.Builder, Messages.Vector.ExtremaOrBuilder> boundsBuilder_;
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       * @return Whether the bounds field is set.
       */
      public boolean hasBounds() {
        return boundsBuilder_ != null || bounds_ != null;
      }
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       * @return The bounds.
       */
      public Messages.Vector.Extrema getBounds() {
        if (boundsBuilder_ == null) {
          return bounds_ == null ? Messages.Vector.Extrema.getDefaultInstance() : bounds_;
        } else {
          return boundsBuilder_.getMessage();
        }
      }
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       */
      public Builder setBounds(Messages.Vector.Extrema value) {
        if (boundsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bounds_ = value;
          onChanged();
        } else {
          boundsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       */
      public Builder setBounds(
          Messages.Vector.Extrema.Builder builderForValue) {
        if (boundsBuilder_ == null) {
          bounds_ = builderForValue.build();
          onChanged();
        } else {
          boundsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       */
      public Builder mergeBounds(Messages.Vector.Extrema value) {
        if (boundsBuilder_ == null) {
          if (bounds_ != null) {
            bounds_ =
              Messages.Vector.Extrema.newBuilder(bounds_).mergeFrom(value).buildPartial();
          } else {
            bounds_ = value;
          }
          onChanged();
        } else {
          boundsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       */
      public Builder clearBounds() {
        if (boundsBuilder_ == null) {
          bounds_ = null;
          onChanged();
        } else {
          bounds_ = null;
          boundsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       */
      public Messages.Vector.Extrema.Builder getBoundsBuilder() {
        
        onChanged();
        return getBoundsFieldBuilder().getBuilder();
      }
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       */
      public Messages.Vector.ExtremaOrBuilder getBoundsOrBuilder() {
        if (boundsBuilder_ != null) {
          return boundsBuilder_.getMessageOrBuilder();
        } else {
          return bounds_ == null ?
              Messages.Vector.Extrema.getDefaultInstance() : bounds_;
        }
      }
      /**
       * <code>.Messages.Extrema bounds = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Extrema, Messages.Vector.Extrema.Builder, Messages.Vector.ExtremaOrBuilder> 
          getBoundsFieldBuilder() {
        if (boundsBuilder_ == null) {
          boundsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.Extrema, Messages.Vector.Extrema.Builder, Messages.Vector.ExtremaOrBuilder>(
                  getBounds(),
                  getParentForChildren(),
                  isClean());
          bounds_ = null;
        }
        return boundsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.SparseMatrix)
    }

    // @@protoc_insertion_point(class_scope:Messages.SparseMatrix)
    private static final Messages.Vector.SparseMatrix DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.SparseMatrix();
    }

    public static Messages.Vector.SparseMatrix getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.SparseMatrix getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Rule)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * serialized property-key &lt;property|modifier|...&gt;
     * </pre>
     *
     * <code>string pk = 1;</code>
     * @return The pk.
     */
    java.lang.String getPk();
    /**
     * <pre>
     * serialized property-key &lt;property|modifier|...&gt;
     * </pre>
     *
     * <code>string pk = 1;</code>
     * @return The bytes for pk.
     */
    com.google.protobuf.ByteString
        getPkBytes();

    /**
     * <pre>
     * either: comparator enum (requirement), or relative priority number in queue
     * </pre>
     *
     * <code>uint32 op = 2;</code>
     * @return The op.
     */
    int getOp();

    /**
     * <code>double value = 3;</code>
     * @return The value.
     */
    double getValue();

    /**
     * <pre>
     * names of algorithms to be associated
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @return A list containing the algorithms.
     */
    java.util.List<java.lang.String>
        getAlgorithmsList();
    /**
     * <pre>
     * names of algorithms to be associated
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @return The count of algorithms.
     */
    int getAlgorithmsCount();
    /**
     * <pre>
     * names of algorithms to be associated
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @param index The index of the element to return.
     * @return The algorithms at the given index.
     */
    java.lang.String getAlgorithms(int index);
    /**
     * <pre>
     * names of algorithms to be associated
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the algorithms at the given index.
     */
    com.google.protobuf.ByteString
        getAlgorithmsBytes(int index);

    /**
     * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
     * @return A list containing the failedNodes.
     */
    java.util.List<java.lang.Integer> getFailedNodesList();
    /**
     * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
     * @return The count of failedNodes.
     */
    int getFailedNodesCount();
    /**
     * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The failedNodes at the given index.
     */
    int getFailedNodes(int index);

    /**
     * <code>repeated double failed_values = 6 [packed = true];</code>
     * @return A list containing the failedValues.
     */
    java.util.List<java.lang.Double> getFailedValuesList();
    /**
     * <code>repeated double failed_values = 6 [packed = true];</code>
     * @return The count of failedValues.
     */
    int getFailedValuesCount();
    /**
     * <code>repeated double failed_values = 6 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The failedValues at the given index.
     */
    double getFailedValues(int index);
  }
  /**
   * <pre>
   *e.g. pk ( != | == | &lt; | &gt; ) value, else: execute algorithm(s)
   * </pre>
   *
   * Protobuf type {@code Messages.Rule}
   */
  public static final class Rule extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Rule)
      RuleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Rule.newBuilder() to construct.
    private Rule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Rule() {
      pk_ = "";
      algorithms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      failedNodes_ = emptyIntList();
      failedValues_ = emptyDoubleList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_Rule_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_Rule_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.Rule.class, Messages.Vector.Rule.Builder.class);
    }

    public static final int PK_FIELD_NUMBER = 1;
    private volatile java.lang.Object pk_;
    /**
     * <pre>
     * serialized property-key &lt;property|modifier|...&gt;
     * </pre>
     *
     * <code>string pk = 1;</code>
     * @return The pk.
     */
    @java.lang.Override
    public java.lang.String getPk() {
      java.lang.Object ref = pk_;
      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();
        pk_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * serialized property-key &lt;property|modifier|...&gt;
     * </pre>
     *
     * <code>string pk = 1;</code>
     * @return The bytes for pk.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPkBytes() {
      java.lang.Object ref = pk_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pk_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OP_FIELD_NUMBER = 2;
    private int op_;
    /**
     * <pre>
     * either: comparator enum (requirement), or relative priority number in queue
     * </pre>
     *
     * <code>uint32 op = 2;</code>
     * @return The op.
     */
    @java.lang.Override
    public int getOp() {
      return op_;
    }

    public static final int VALUE_FIELD_NUMBER = 3;
    private double value_;
    /**
     * <code>double value = 3;</code>
     * @return The value.
     */
    @java.lang.Override
    public double getValue() {
      return value_;
    }

    public static final int ALGORITHMS_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList algorithms_;
    /**
     * <pre>
     * names of algorithms to be associated
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @return A list containing the algorithms.
     */
    public com.google.protobuf.ProtocolStringList
        getAlgorithmsList() {
      return algorithms_;
    }
    /**
     * <pre>
     * names of algorithms to be associated
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @return The count of algorithms.
     */
    public int getAlgorithmsCount() {
      return algorithms_.size();
    }
    /**
     * <pre>
     * names of algorithms to be associated
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @param index The index of the element to return.
     * @return The algorithms at the given index.
     */
    public java.lang.String getAlgorithms(int index) {
      return algorithms_.get(index);
    }
    /**
     * <pre>
     * names of algorithms to be associated
     * </pre>
     *
     * <code>repeated string algorithms = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the algorithms at the given index.
     */
    public com.google.protobuf.ByteString
        getAlgorithmsBytes(int index) {
      return algorithms_.getByteString(index);
    }

    public static final int FAILED_NODES_FIELD_NUMBER = 5;
    private com.google.protobuf.Internal.IntList failedNodes_;
    /**
     * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
     * @return A list containing the failedNodes.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getFailedNodesList() {
      return failedNodes_;
    }
    /**
     * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
     * @return The count of failedNodes.
     */
    public int getFailedNodesCount() {
      return failedNodes_.size();
    }
    /**
     * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The failedNodes at the given index.
     */
    public int getFailedNodes(int index) {
      return failedNodes_.getInt(index);
    }
    private int failedNodesMemoizedSerializedSize = -1;

    public static final int FAILED_VALUES_FIELD_NUMBER = 6;
    private com.google.protobuf.Internal.DoubleList failedValues_;
    /**
     * <code>repeated double failed_values = 6 [packed = true];</code>
     * @return A list containing the failedValues.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getFailedValuesList() {
      return failedValues_;
    }
    /**
     * <code>repeated double failed_values = 6 [packed = true];</code>
     * @return The count of failedValues.
     */
    public int getFailedValuesCount() {
      return failedValues_.size();
    }
    /**
     * <code>repeated double failed_values = 6 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The failedValues at the given index.
     */
    public double getFailedValues(int index) {
      return failedValues_.getDouble(index);
    }
    private int failedValuesMemoizedSerializedSize = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pk_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, pk_);
      }
      if (op_ != 0) {
        output.writeUInt32(2, op_);
      }
      if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
        output.writeDouble(3, value_);
      }
      for (int i = 0; i < algorithms_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, algorithms_.getRaw(i));
      }
      if (getFailedNodesList().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(failedNodesMemoizedSerializedSize);
      }
      for (int i = 0; i < failedNodes_.size(); i++) {
        output.writeUInt32NoTag(failedNodes_.getInt(i));
      }
      if (getFailedValuesList().size() > 0) {
        output.writeUInt32NoTag(50);
        output.writeUInt32NoTag(failedValuesMemoizedSerializedSize);
      }
      for (int i = 0; i < failedValues_.size(); i++) {
        output.writeDoubleNoTag(failedValues_.getDouble(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pk_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, pk_);
      }
      if (op_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, op_);
      }
      if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, value_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < algorithms_.size(); i++) {
          dataSize += computeStringSizeNoTag(algorithms_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAlgorithmsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < failedNodes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(failedNodes_.getInt(i));
        }
        size += dataSize;
        if (!getFailedNodesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        failedNodesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getFailedValuesList().size();
        size += dataSize;
        if (!getFailedValuesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        failedValuesMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.Rule)) {
        return super.equals(obj);
      }
      Messages.Vector.Rule other = (Messages.Vector.Rule) obj;

      if (!getPk()
          .equals(other.getPk())) return false;
      if (getOp()
          != other.getOp()) return false;
      if (java.lang.Double.doubleToLongBits(getValue())
          != java.lang.Double.doubleToLongBits(
              other.getValue())) return false;
      if (!getAlgorithmsList()
          .equals(other.getAlgorithmsList())) return false;
      if (!getFailedNodesList()
          .equals(other.getFailedNodesList())) return false;
      if (!getFailedValuesList()
          .equals(other.getFailedValuesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PK_FIELD_NUMBER;
      hash = (53 * hash) + getPk().hashCode();
      hash = (37 * hash) + OP_FIELD_NUMBER;
      hash = (53 * hash) + getOp();
      hash = (37 * hash) + VALUE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getValue()));
      if (getAlgorithmsCount() > 0) {
        hash = (37 * hash) + ALGORITHMS_FIELD_NUMBER;
        hash = (53 * hash) + getAlgorithmsList().hashCode();
      }
      if (getFailedNodesCount() > 0) {
        hash = (37 * hash) + FAILED_NODES_FIELD_NUMBER;
        hash = (53 * hash) + getFailedNodesList().hashCode();
      }
      if (getFailedValuesCount() > 0) {
        hash = (37 * hash) + FAILED_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getFailedValuesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.Rule prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *e.g. pk ( != | == | &lt; | &gt; ) value, else: execute algorithm(s)
     * </pre>
     *
     * Protobuf type {@code Messages.Rule}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Rule)
        Messages.Vector.RuleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_Rule_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_Rule_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.Rule.class, Messages.Vector.Rule.Builder.class);
      }

      // Construct using Messages.Vector.Rule.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        pk_ = "";

        op_ = 0;

        value_ = 0D;

        algorithms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        failedNodes_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        failedValues_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_Rule_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.Rule getDefaultInstanceForType() {
        return Messages.Vector.Rule.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.Rule build() {
        Messages.Vector.Rule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.Rule buildPartial() {
        Messages.Vector.Rule result = new Messages.Vector.Rule(this);
        int from_bitField0_ = bitField0_;
        result.pk_ = pk_;
        result.op_ = op_;
        result.value_ = value_;
        if (((bitField0_ & 0x00000001) != 0)) {
          algorithms_ = algorithms_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.algorithms_ = algorithms_;
        if (((bitField0_ & 0x00000002) != 0)) {
          failedNodes_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.failedNodes_ = failedNodes_;
        if (((bitField0_ & 0x00000004) != 0)) {
          failedValues_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.failedValues_ = failedValues_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.Rule other) {
        if (other == Messages.Vector.Rule.getDefaultInstance()) return this;
        if (!other.getPk().isEmpty()) {
          pk_ = other.pk_;
          onChanged();
        }
        if (other.getOp() != 0) {
          setOp(other.getOp());
        }
        if (other.getValue() != 0D) {
          setValue(other.getValue());
        }
        if (!other.algorithms_.isEmpty()) {
          if (algorithms_.isEmpty()) {
            algorithms_ = other.algorithms_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureAlgorithmsIsMutable();
            algorithms_.addAll(other.algorithms_);
          }
          onChanged();
        }
        if (!other.failedNodes_.isEmpty()) {
          if (failedNodes_.isEmpty()) {
            failedNodes_ = other.failedNodes_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureFailedNodesIsMutable();
            failedNodes_.addAll(other.failedNodes_);
          }
          onChanged();
        }
        if (!other.failedValues_.isEmpty()) {
          if (failedValues_.isEmpty()) {
            failedValues_ = other.failedValues_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureFailedValuesIsMutable();
            failedValues_.addAll(other.failedValues_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                pk_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                op_ = input.readUInt32();

                break;
              } // case 16
              case 25: {
                value_ = input.readDouble();

                break;
              } // case 25
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureAlgorithmsIsMutable();
                algorithms_.add(s);
                break;
              } // case 34
              case 40: {
                int v = input.readUInt32();
                ensureFailedNodesIsMutable();
                failedNodes_.addInt(v);
                break;
              } // case 40
              case 42: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureFailedNodesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  failedNodes_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 42
              case 49: {
                double v = input.readDouble();
                ensureFailedValuesIsMutable();
                failedValues_.addDouble(v);
                break;
              } // case 49
              case 50: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureFailedValuesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  failedValues_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object pk_ = "";
      /**
       * <pre>
       * serialized property-key &lt;property|modifier|...&gt;
       * </pre>
       *
       * <code>string pk = 1;</code>
       * @return The pk.
       */
      public java.lang.String getPk() {
        java.lang.Object ref = pk_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          pk_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * serialized property-key &lt;property|modifier|...&gt;
       * </pre>
       *
       * <code>string pk = 1;</code>
       * @return The bytes for pk.
       */
      public com.google.protobuf.ByteString
          getPkBytes() {
        java.lang.Object ref = pk_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pk_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * serialized property-key &lt;property|modifier|...&gt;
       * </pre>
       *
       * <code>string pk = 1;</code>
       * @param value The pk to set.
       * @return This builder for chaining.
       */
      public Builder setPk(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        pk_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serialized property-key &lt;property|modifier|...&gt;
       * </pre>
       *
       * <code>string pk = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPk() {
        
        pk_ = getDefaultInstance().getPk();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * serialized property-key &lt;property|modifier|...&gt;
       * </pre>
       *
       * <code>string pk = 1;</code>
       * @param value The bytes for pk to set.
       * @return This builder for chaining.
       */
      public Builder setPkBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        pk_ = value;
        onChanged();
        return this;
      }

      private int op_ ;
      /**
       * <pre>
       * either: comparator enum (requirement), or relative priority number in queue
       * </pre>
       *
       * <code>uint32 op = 2;</code>
       * @return The op.
       */
      @java.lang.Override
      public int getOp() {
        return op_;
      }
      /**
       * <pre>
       * either: comparator enum (requirement), or relative priority number in queue
       * </pre>
       *
       * <code>uint32 op = 2;</code>
       * @param value The op to set.
       * @return This builder for chaining.
       */
      public Builder setOp(int value) {
        
        op_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * either: comparator enum (requirement), or relative priority number in queue
       * </pre>
       *
       * <code>uint32 op = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOp() {
        
        op_ = 0;
        onChanged();
        return this;
      }

      private double value_ ;
      /**
       * <code>double value = 3;</code>
       * @return The value.
       */
      @java.lang.Override
      public double getValue() {
        return value_;
      }
      /**
       * <code>double value = 3;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(double value) {
        
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>double value = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        
        value_ = 0D;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList algorithms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAlgorithmsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          algorithms_ = new com.google.protobuf.LazyStringArrayList(algorithms_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @return A list containing the algorithms.
       */
      public com.google.protobuf.ProtocolStringList
          getAlgorithmsList() {
        return algorithms_.getUnmodifiableView();
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @return The count of algorithms.
       */
      public int getAlgorithmsCount() {
        return algorithms_.size();
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param index The index of the element to return.
       * @return The algorithms at the given index.
       */
      public java.lang.String getAlgorithms(int index) {
        return algorithms_.get(index);
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the algorithms at the given index.
       */
      public com.google.protobuf.ByteString
          getAlgorithmsBytes(int index) {
        return algorithms_.getByteString(index);
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param index The index to set the value at.
       * @param value The algorithms to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithms(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAlgorithmsIsMutable();
        algorithms_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param value The algorithms to add.
       * @return This builder for chaining.
       */
      public Builder addAlgorithms(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAlgorithmsIsMutable();
        algorithms_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param values The algorithms to add.
       * @return This builder for chaining.
       */
      public Builder addAllAlgorithms(
          java.lang.Iterable<java.lang.String> values) {
        ensureAlgorithmsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, algorithms_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearAlgorithms() {
        algorithms_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * names of algorithms to be associated
       * </pre>
       *
       * <code>repeated string algorithms = 4;</code>
       * @param value The bytes of the algorithms to add.
       * @return This builder for chaining.
       */
      public Builder addAlgorithmsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureAlgorithmsIsMutable();
        algorithms_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList failedNodes_ = emptyIntList();
      private void ensureFailedNodesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          failedNodes_ = mutableCopy(failedNodes_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
       * @return A list containing the failedNodes.
       */
      public java.util.List<java.lang.Integer>
          getFailedNodesList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(failedNodes_) : failedNodes_;
      }
      /**
       * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
       * @return The count of failedNodes.
       */
      public int getFailedNodesCount() {
        return failedNodes_.size();
      }
      /**
       * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The failedNodes at the given index.
       */
      public int getFailedNodes(int index) {
        return failedNodes_.getInt(index);
      }
      /**
       * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The failedNodes to set.
       * @return This builder for chaining.
       */
      public Builder setFailedNodes(
          int index, int value) {
        ensureFailedNodesIsMutable();
        failedNodes_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
       * @param value The failedNodes to add.
       * @return This builder for chaining.
       */
      public Builder addFailedNodes(int value) {
        ensureFailedNodesIsMutable();
        failedNodes_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
       * @param values The failedNodes to add.
       * @return This builder for chaining.
       */
      public Builder addAllFailedNodes(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureFailedNodesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, failedNodes_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 failed_nodes = 5 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearFailedNodes() {
        failedNodes_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList failedValues_ = emptyDoubleList();
      private void ensureFailedValuesIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          failedValues_ = mutableCopy(failedValues_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated double failed_values = 6 [packed = true];</code>
       * @return A list containing the failedValues.
       */
      public java.util.List<java.lang.Double>
          getFailedValuesList() {
        return ((bitField0_ & 0x00000004) != 0) ?
                 java.util.Collections.unmodifiableList(failedValues_) : failedValues_;
      }
      /**
       * <code>repeated double failed_values = 6 [packed = true];</code>
       * @return The count of failedValues.
       */
      public int getFailedValuesCount() {
        return failedValues_.size();
      }
      /**
       * <code>repeated double failed_values = 6 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The failedValues at the given index.
       */
      public double getFailedValues(int index) {
        return failedValues_.getDouble(index);
      }
      /**
       * <code>repeated double failed_values = 6 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The failedValues to set.
       * @return This builder for chaining.
       */
      public Builder setFailedValues(
          int index, double value) {
        ensureFailedValuesIsMutable();
        failedValues_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double failed_values = 6 [packed = true];</code>
       * @param value The failedValues to add.
       * @return This builder for chaining.
       */
      public Builder addFailedValues(double value) {
        ensureFailedValuesIsMutable();
        failedValues_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double failed_values = 6 [packed = true];</code>
       * @param values The failedValues to add.
       * @return This builder for chaining.
       */
      public Builder addAllFailedValues(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureFailedValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, failedValues_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated double failed_values = 6 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearFailedValues() {
        failedValues_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Rule)
    }

    // @@protoc_insertion_point(class_scope:Messages.Rule)
    private static final Messages.Vector.Rule DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.Rule();
    }

    public static Messages.Vector.Rule getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.Rule getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface Record64OrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Record64)
      com.google.protobuf.MessageOrBuilder {

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

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

    /**
     * <code>.Messages.Revision revision = 3;</code>
     * @return Whether the revision field is set.
     */
    boolean hasRevision();
    /**
     * <code>.Messages.Revision revision = 3;</code>
     * @return The revision.
     */
    Messages.Vector.Revision getRevision();
    /**
     * <code>.Messages.Revision revision = 3;</code>
     */
    Messages.Vector.RevisionOrBuilder getRevisionOrBuilder();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint32 length_units = 8;</code>
     * @return The lengthUnits.
     */
    int getLengthUnits();

    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    java.util.List<Messages.Vector.Rule> 
        getRequirementsList();
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    Messages.Vector.Rule getRequirements(int index);
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    int getRequirementsCount();
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    java.util.List<? extends Messages.Vector.RuleOrBuilder> 
        getRequirementsOrBuilderList();
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    Messages.Vector.RuleOrBuilder getRequirementsOrBuilder(
        int index);

    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    java.util.List<Messages.Vector.Vector64> 
        getDataList();
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    Messages.Vector.Vector64 getData(int index);
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    int getDataCount();
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    java.util.List<? extends Messages.Vector.Vector64OrBuilder> 
        getDataOrBuilderList();
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    Messages.Vector.Vector64OrBuilder getDataOrBuilder(
        int index);

    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    java.util.List<Messages.Vector.SparseMatrix> 
        getMatrixList();
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    Messages.Vector.SparseMatrix getMatrix(int index);
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    int getMatrixCount();
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    java.util.List<? extends Messages.Vector.SparseMatrixOrBuilder> 
        getMatrixOrBuilderList();
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    Messages.Vector.SparseMatrixOrBuilder getMatrixOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Messages.Record64}
   */
  public static final class Record64 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Record64)
      Record64OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Record64.newBuilder() to construct.
    private Record64(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Record64() {
      name_ = "";
      owner_ = "";
      requirements_ = java.util.Collections.emptyList();
      data_ = java.util.Collections.emptyList();
      matrix_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_Record64_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_Record64_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.Record64.class, Messages.Vector.Record64.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OWNER_FIELD_NUMBER = 2;
    private volatile java.lang.Object owner_;
    /**
     * <code>string owner = 2;</code>
     * @return The owner.
     */
    @java.lang.Override
    public java.lang.String getOwner() {
      java.lang.Object ref = owner_;
      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();
        owner_ = s;
        return s;
      }
    }
    /**
     * <code>string owner = 2;</code>
     * @return The bytes for owner.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOwnerBytes() {
      java.lang.Object ref = owner_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        owner_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REVISION_FIELD_NUMBER = 3;
    private Messages.Vector.Revision revision_;
    /**
     * <code>.Messages.Revision revision = 3;</code>
     * @return Whether the revision field is set.
     */
    @java.lang.Override
    public boolean hasRevision() {
      return revision_ != null;
    }
    /**
     * <code>.Messages.Revision revision = 3;</code>
     * @return The revision.
     */
    @java.lang.Override
    public Messages.Vector.Revision getRevision() {
      return revision_ == null ? Messages.Vector.Revision.getDefaultInstance() : revision_;
    }
    /**
     * <code>.Messages.Revision revision = 3;</code>
     */
    @java.lang.Override
    public Messages.Vector.RevisionOrBuilder getRevisionOrBuilder() {
      return getRevision();
    }

    public static final int LENGTH_UNITS_FIELD_NUMBER = 8;
    private int lengthUnits_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint32 length_units = 8;</code>
     * @return The lengthUnits.
     */
    @java.lang.Override
    public int getLengthUnits() {
      return lengthUnits_;
    }

    public static final int REQUIREMENTS_FIELD_NUMBER = 9;
    private java.util.List<Messages.Vector.Rule> requirements_;
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Vector.Rule> getRequirementsList() {
      return requirements_;
    }
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Vector.RuleOrBuilder> 
        getRequirementsOrBuilderList() {
      return requirements_;
    }
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    @java.lang.Override
    public int getRequirementsCount() {
      return requirements_.size();
    }
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    @java.lang.Override
    public Messages.Vector.Rule getRequirements(int index) {
      return requirements_.get(index);
    }
    /**
     * <code>repeated .Messages.Rule requirements = 9;</code>
     */
    @java.lang.Override
    public Messages.Vector.RuleOrBuilder getRequirementsOrBuilder(
        int index) {
      return requirements_.get(index);
    }

    public static final int DATA_FIELD_NUMBER = 10;
    private java.util.List<Messages.Vector.Vector64> data_;
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Vector.Vector64> getDataList() {
      return data_;
    }
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Vector.Vector64OrBuilder> 
        getDataOrBuilderList() {
      return data_;
    }
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    @java.lang.Override
    public int getDataCount() {
      return data_.size();
    }
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    @java.lang.Override
    public Messages.Vector.Vector64 getData(int index) {
      return data_.get(index);
    }
    /**
     * <code>repeated .Messages.Vector64 data = 10;</code>
     */
    @java.lang.Override
    public Messages.Vector.Vector64OrBuilder getDataOrBuilder(
        int index) {
      return data_.get(index);
    }

    public static final int MATRIX_FIELD_NUMBER = 11;
    private java.util.List<Messages.Vector.SparseMatrix> matrix_;
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    @java.lang.Override
    public java.util.List<Messages.Vector.SparseMatrix> getMatrixList() {
      return matrix_;
    }
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    @java.lang.Override
    public java.util.List<? extends Messages.Vector.SparseMatrixOrBuilder> 
        getMatrixOrBuilderList() {
      return matrix_;
    }
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    @java.lang.Override
    public int getMatrixCount() {
      return matrix_.size();
    }
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    @java.lang.Override
    public Messages.Vector.SparseMatrix getMatrix(int index) {
      return matrix_.get(index);
    }
    /**
     * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
     */
    @java.lang.Override
    public Messages.Vector.SparseMatrixOrBuilder getMatrixOrBuilder(
        int index) {
      return matrix_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(owner_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, owner_);
      }
      if (revision_ != null) {
        output.writeMessage(3, getRevision());
      }
      if (lengthUnits_ != 0) {
        output.writeUInt32(8, lengthUnits_);
      }
      for (int i = 0; i < requirements_.size(); i++) {
        output.writeMessage(9, requirements_.get(i));
      }
      for (int i = 0; i < data_.size(); i++) {
        output.writeMessage(10, data_.get(i));
      }
      for (int i = 0; i < matrix_.size(); i++) {
        output.writeMessage(11, matrix_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(owner_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, owner_);
      }
      if (revision_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getRevision());
      }
      if (lengthUnits_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(8, lengthUnits_);
      }
      for (int i = 0; i < requirements_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, requirements_.get(i));
      }
      for (int i = 0; i < data_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, data_.get(i));
      }
      for (int i = 0; i < matrix_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, matrix_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.Record64)) {
        return super.equals(obj);
      }
      Messages.Vector.Record64 other = (Messages.Vector.Record64) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getOwner()
          .equals(other.getOwner())) return false;
      if (hasRevision() != other.hasRevision()) return false;
      if (hasRevision()) {
        if (!getRevision()
            .equals(other.getRevision())) return false;
      }
      if (getLengthUnits()
          != other.getLengthUnits()) return false;
      if (!getRequirementsList()
          .equals(other.getRequirementsList())) return false;
      if (!getDataList()
          .equals(other.getDataList())) return false;
      if (!getMatrixList()
          .equals(other.getMatrixList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + OWNER_FIELD_NUMBER;
      hash = (53 * hash) + getOwner().hashCode();
      if (hasRevision()) {
        hash = (37 * hash) + REVISION_FIELD_NUMBER;
        hash = (53 * hash) + getRevision().hashCode();
      }
      hash = (37 * hash) + LENGTH_UNITS_FIELD_NUMBER;
      hash = (53 * hash) + getLengthUnits();
      if (getRequirementsCount() > 0) {
        hash = (37 * hash) + REQUIREMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getRequirementsList().hashCode();
      }
      if (getDataCount() > 0) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getDataList().hashCode();
      }
      if (getMatrixCount() > 0) {
        hash = (37 * hash) + MATRIX_FIELD_NUMBER;
        hash = (53 * hash) + getMatrixList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.Record64 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Record64}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Record64)
        Messages.Vector.Record64OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_Record64_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_Record64_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.Record64.class, Messages.Vector.Record64.Builder.class);
      }

      // Construct using Messages.Vector.Record64.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        owner_ = "";

        if (revisionBuilder_ == null) {
          revision_ = null;
        } else {
          revision_ = null;
          revisionBuilder_ = null;
        }
        lengthUnits_ = 0;

        if (requirementsBuilder_ == null) {
          requirements_ = java.util.Collections.emptyList();
        } else {
          requirements_ = null;
          requirementsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (dataBuilder_ == null) {
          data_ = java.util.Collections.emptyList();
        } else {
          data_ = null;
          dataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (matrixBuilder_ == null) {
          matrix_ = java.util.Collections.emptyList();
        } else {
          matrix_ = null;
          matrixBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_Record64_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.Record64 getDefaultInstanceForType() {
        return Messages.Vector.Record64.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.Record64 build() {
        Messages.Vector.Record64 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.Record64 buildPartial() {
        Messages.Vector.Record64 result = new Messages.Vector.Record64(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        result.owner_ = owner_;
        if (revisionBuilder_ == null) {
          result.revision_ = revision_;
        } else {
          result.revision_ = revisionBuilder_.build();
        }
        result.lengthUnits_ = lengthUnits_;
        if (requirementsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            requirements_ = java.util.Collections.unmodifiableList(requirements_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.requirements_ = requirements_;
        } else {
          result.requirements_ = requirementsBuilder_.build();
        }
        if (dataBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            data_ = java.util.Collections.unmodifiableList(data_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        if (matrixBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            matrix_ = java.util.Collections.unmodifiableList(matrix_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.matrix_ = matrix_;
        } else {
          result.matrix_ = matrixBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.Record64 other) {
        if (other == Messages.Vector.Record64.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getOwner().isEmpty()) {
          owner_ = other.owner_;
          onChanged();
        }
        if (other.hasRevision()) {
          mergeRevision(other.getRevision());
        }
        if (other.getLengthUnits() != 0) {
          setLengthUnits(other.getLengthUnits());
        }
        if (requirementsBuilder_ == null) {
          if (!other.requirements_.isEmpty()) {
            if (requirements_.isEmpty()) {
              requirements_ = other.requirements_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRequirementsIsMutable();
              requirements_.addAll(other.requirements_);
            }
            onChanged();
          }
        } else {
          if (!other.requirements_.isEmpty()) {
            if (requirementsBuilder_.isEmpty()) {
              requirementsBuilder_.dispose();
              requirementsBuilder_ = null;
              requirements_ = other.requirements_;
              bitField0_ = (bitField0_ & ~0x00000001);
              requirementsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRequirementsFieldBuilder() : null;
            } else {
              requirementsBuilder_.addAllMessages(other.requirements_);
            }
          }
        }
        if (dataBuilder_ == null) {
          if (!other.data_.isEmpty()) {
            if (data_.isEmpty()) {
              data_ = other.data_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureDataIsMutable();
              data_.addAll(other.data_);
            }
            onChanged();
          }
        } else {
          if (!other.data_.isEmpty()) {
            if (dataBuilder_.isEmpty()) {
              dataBuilder_.dispose();
              dataBuilder_ = null;
              data_ = other.data_;
              bitField0_ = (bitField0_ & ~0x00000002);
              dataBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDataFieldBuilder() : null;
            } else {
              dataBuilder_.addAllMessages(other.data_);
            }
          }
        }
        if (matrixBuilder_ == null) {
          if (!other.matrix_.isEmpty()) {
            if (matrix_.isEmpty()) {
              matrix_ = other.matrix_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureMatrixIsMutable();
              matrix_.addAll(other.matrix_);
            }
            onChanged();
          }
        } else {
          if (!other.matrix_.isEmpty()) {
            if (matrixBuilder_.isEmpty()) {
              matrixBuilder_.dispose();
              matrixBuilder_ = null;
              matrix_ = other.matrix_;
              bitField0_ = (bitField0_ & ~0x00000004);
              matrixBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMatrixFieldBuilder() : null;
            } else {
              matrixBuilder_.addAllMessages(other.matrix_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                owner_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getRevisionFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 26
              case 64: {
                lengthUnits_ = input.readUInt32();

                break;
              } // case 64
              case 74: {
                Messages.Vector.Rule m =
                    input.readMessage(
                        Messages.Vector.Rule.parser(),
                        extensionRegistry);
                if (requirementsBuilder_ == null) {
                  ensureRequirementsIsMutable();
                  requirements_.add(m);
                } else {
                  requirementsBuilder_.addMessage(m);
                }
                break;
              } // case 74
              case 82: {
                Messages.Vector.Vector64 m =
                    input.readMessage(
                        Messages.Vector.Vector64.parser(),
                        extensionRegistry);
                if (dataBuilder_ == null) {
                  ensureDataIsMutable();
                  data_.add(m);
                } else {
                  dataBuilder_.addMessage(m);
                }
                break;
              } // case 82
              case 90: {
                Messages.Vector.SparseMatrix m =
                    input.readMessage(
                        Messages.Vector.SparseMatrix.parser(),
                        extensionRegistry);
                if (matrixBuilder_ == null) {
                  ensureMatrixIsMutable();
                  matrix_.add(m);
                } else {
                  matrixBuilder_.addMessage(m);
                }
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object owner_ = "";
      /**
       * <code>string owner = 2;</code>
       * @return The owner.
       */
      public java.lang.String getOwner() {
        java.lang.Object ref = owner_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          owner_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string owner = 2;</code>
       * @return The bytes for owner.
       */
      public com.google.protobuf.ByteString
          getOwnerBytes() {
        java.lang.Object ref = owner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string owner = 2;</code>
       * @param value The owner to set.
       * @return This builder for chaining.
       */
      public Builder setOwner(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        owner_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string owner = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOwner() {
        
        owner_ = getDefaultInstance().getOwner();
        onChanged();
        return this;
      }
      /**
       * <code>string owner = 2;</code>
       * @param value The bytes for owner to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        owner_ = value;
        onChanged();
        return this;
      }

      private Messages.Vector.Revision revision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder> revisionBuilder_;
      /**
       * <code>.Messages.Revision revision = 3;</code>
       * @return Whether the revision field is set.
       */
      public boolean hasRevision() {
        return revisionBuilder_ != null || revision_ != null;
      }
      /**
       * <code>.Messages.Revision revision = 3;</code>
       * @return The revision.
       */
      public Messages.Vector.Revision getRevision() {
        if (revisionBuilder_ == null) {
          return revision_ == null ? Messages.Vector.Revision.getDefaultInstance() : revision_;
        } else {
          return revisionBuilder_.getMessage();
        }
      }
      /**
       * <code>.Messages.Revision revision = 3;</code>
       */
      public Builder setRevision(Messages.Vector.Revision value) {
        if (revisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          revision_ = value;
          onChanged();
        } else {
          revisionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 3;</code>
       */
      public Builder setRevision(
          Messages.Vector.Revision.Builder builderForValue) {
        if (revisionBuilder_ == null) {
          revision_ = builderForValue.build();
          onChanged();
        } else {
          revisionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 3;</code>
       */
      public Builder mergeRevision(Messages.Vector.Revision value) {
        if (revisionBuilder_ == null) {
          if (revision_ != null) {
            revision_ =
              Messages.Vector.Revision.newBuilder(revision_).mergeFrom(value).buildPartial();
          } else {
            revision_ = value;
          }
          onChanged();
        } else {
          revisionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 3;</code>
       */
      public Builder clearRevision() {
        if (revisionBuilder_ == null) {
          revision_ = null;
          onChanged();
        } else {
          revision_ = null;
          revisionBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 3;</code>
       */
      public Messages.Vector.Revision.Builder getRevisionBuilder() {
        
        onChanged();
        return getRevisionFieldBuilder().getBuilder();
      }
      /**
       * <code>.Messages.Revision revision = 3;</code>
       */
      public Messages.Vector.RevisionOrBuilder getRevisionOrBuilder() {
        if (revisionBuilder_ != null) {
          return revisionBuilder_.getMessageOrBuilder();
        } else {
          return revision_ == null ?
              Messages.Vector.Revision.getDefaultInstance() : revision_;
        }
      }
      /**
       * <code>.Messages.Revision revision = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder> 
          getRevisionFieldBuilder() {
        if (revisionBuilder_ == null) {
          revisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder>(
                  getRevision(),
                  getParentForChildren(),
                  isClean());
          revision_ = null;
        }
        return revisionBuilder_;
      }

      private int lengthUnits_ ;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint32 length_units = 8;</code>
       * @return The lengthUnits.
       */
      @java.lang.Override
      public int getLengthUnits() {
        return lengthUnits_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint32 length_units = 8;</code>
       * @param value The lengthUnits to set.
       * @return This builder for chaining.
       */
      public Builder setLengthUnits(int value) {
        
        lengthUnits_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint32 length_units = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearLengthUnits() {
        
        lengthUnits_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<Messages.Vector.Rule> requirements_ =
        java.util.Collections.emptyList();
      private void ensureRequirementsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          requirements_ = new java.util.ArrayList<Messages.Vector.Rule>(requirements_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder> requirementsBuilder_;

      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public java.util.List<Messages.Vector.Rule> getRequirementsList() {
        if (requirementsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(requirements_);
        } else {
          return requirementsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public int getRequirementsCount() {
        if (requirementsBuilder_ == null) {
          return requirements_.size();
        } else {
          return requirementsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Messages.Vector.Rule getRequirements(int index) {
        if (requirementsBuilder_ == null) {
          return requirements_.get(index);
        } else {
          return requirementsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder setRequirements(
          int index, Messages.Vector.Rule value) {
        if (requirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequirementsIsMutable();
          requirements_.set(index, value);
          onChanged();
        } else {
          requirementsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder setRequirements(
          int index, Messages.Vector.Rule.Builder builderForValue) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          requirements_.set(index, builderForValue.build());
          onChanged();
        } else {
          requirementsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder addRequirements(Messages.Vector.Rule value) {
        if (requirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequirementsIsMutable();
          requirements_.add(value);
          onChanged();
        } else {
          requirementsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder addRequirements(
          int index, Messages.Vector.Rule value) {
        if (requirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequirementsIsMutable();
          requirements_.add(index, value);
          onChanged();
        } else {
          requirementsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder addRequirements(
          Messages.Vector.Rule.Builder builderForValue) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          requirements_.add(builderForValue.build());
          onChanged();
        } else {
          requirementsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder addRequirements(
          int index, Messages.Vector.Rule.Builder builderForValue) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          requirements_.add(index, builderForValue.build());
          onChanged();
        } else {
          requirementsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder addAllRequirements(
          java.lang.Iterable<? extends Messages.Vector.Rule> values) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, requirements_);
          onChanged();
        } else {
          requirementsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder clearRequirements() {
        if (requirementsBuilder_ == null) {
          requirements_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          requirementsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Builder removeRequirements(int index) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          requirements_.remove(index);
          onChanged();
        } else {
          requirementsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Messages.Vector.Rule.Builder getRequirementsBuilder(
          int index) {
        return getRequirementsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Messages.Vector.RuleOrBuilder getRequirementsOrBuilder(
          int index) {
        if (requirementsBuilder_ == null) {
          return requirements_.get(index);  } else {
          return requirementsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public java.util.List<? extends Messages.Vector.RuleOrBuilder> 
           getRequirementsOrBuilderList() {
        if (requirementsBuilder_ != null) {
          return requirementsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(requirements_);
        }
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Messages.Vector.Rule.Builder addRequirementsBuilder() {
        return getRequirementsFieldBuilder().addBuilder(
            Messages.Vector.Rule.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public Messages.Vector.Rule.Builder addRequirementsBuilder(
          int index) {
        return getRequirementsFieldBuilder().addBuilder(
            index, Messages.Vector.Rule.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.Rule requirements = 9;</code>
       */
      public java.util.List<Messages.Vector.Rule.Builder> 
           getRequirementsBuilderList() {
        return getRequirementsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder> 
          getRequirementsFieldBuilder() {
        if (requirementsBuilder_ == null) {
          requirementsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Vector.Rule, Messages.Vector.Rule.Builder, Messages.Vector.RuleOrBuilder>(
                  requirements_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          requirements_ = null;
        }
        return requirementsBuilder_;
      }

      private java.util.List<Messages.Vector.Vector64> data_ =
        java.util.Collections.emptyList();
      private void ensureDataIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          data_ = new java.util.ArrayList<Messages.Vector.Vector64>(data_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Vector64, Messages.Vector.Vector64.Builder, Messages.Vector.Vector64OrBuilder> dataBuilder_;

      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public java.util.List<Messages.Vector.Vector64> getDataList() {
        if (dataBuilder_ == null) {
          return java.util.Collections.unmodifiableList(data_);
        } else {
          return dataBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public int getDataCount() {
        if (dataBuilder_ == null) {
          return data_.size();
        } else {
          return dataBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Messages.Vector.Vector64 getData(int index) {
        if (dataBuilder_ == null) {
          return data_.get(index);
        } else {
          return dataBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder setData(
          int index, Messages.Vector.Vector64 value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.set(index, value);
          onChanged();
        } else {
          dataBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder setData(
          int index, Messages.Vector.Vector64.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.set(index, builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder addData(Messages.Vector.Vector64 value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.add(value);
          onChanged();
        } else {
          dataBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder addData(
          int index, Messages.Vector.Vector64 value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDataIsMutable();
          data_.add(index, value);
          onChanged();
        } else {
          dataBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder addData(
          Messages.Vector.Vector64.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.add(builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder addData(
          int index, Messages.Vector.Vector64.Builder builderForValue) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.add(index, builderForValue.build());
          onChanged();
        } else {
          dataBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder addAllData(
          java.lang.Iterable<? extends Messages.Vector.Vector64> values) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, data_);
          onChanged();
        } else {
          dataBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Builder removeData(int index) {
        if (dataBuilder_ == null) {
          ensureDataIsMutable();
          data_.remove(index);
          onChanged();
        } else {
          dataBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Messages.Vector.Vector64.Builder getDataBuilder(
          int index) {
        return getDataFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Messages.Vector.Vector64OrBuilder getDataOrBuilder(
          int index) {
        if (dataBuilder_ == null) {
          return data_.get(index);  } else {
          return dataBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public java.util.List<? extends Messages.Vector.Vector64OrBuilder> 
           getDataOrBuilderList() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(data_);
        }
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Messages.Vector.Vector64.Builder addDataBuilder() {
        return getDataFieldBuilder().addBuilder(
            Messages.Vector.Vector64.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public Messages.Vector.Vector64.Builder addDataBuilder(
          int index) {
        return getDataFieldBuilder().addBuilder(
            index, Messages.Vector.Vector64.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.Vector64 data = 10;</code>
       */
      public java.util.List<Messages.Vector.Vector64.Builder> 
           getDataBuilderList() {
        return getDataFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.Vector64, Messages.Vector.Vector64.Builder, Messages.Vector.Vector64OrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Vector.Vector64, Messages.Vector.Vector64.Builder, Messages.Vector.Vector64OrBuilder>(
                  data_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private java.util.List<Messages.Vector.SparseMatrix> matrix_ =
        java.util.Collections.emptyList();
      private void ensureMatrixIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          matrix_ = new java.util.ArrayList<Messages.Vector.SparseMatrix>(matrix_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.SparseMatrix, Messages.Vector.SparseMatrix.Builder, Messages.Vector.SparseMatrixOrBuilder> matrixBuilder_;

      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public java.util.List<Messages.Vector.SparseMatrix> getMatrixList() {
        if (matrixBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matrix_);
        } else {
          return matrixBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public int getMatrixCount() {
        if (matrixBuilder_ == null) {
          return matrix_.size();
        } else {
          return matrixBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Messages.Vector.SparseMatrix getMatrix(int index) {
        if (matrixBuilder_ == null) {
          return matrix_.get(index);
        } else {
          return matrixBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder setMatrix(
          int index, Messages.Vector.SparseMatrix value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.set(index, value);
          onChanged();
        } else {
          matrixBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder setMatrix(
          int index, Messages.Vector.SparseMatrix.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.set(index, builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder addMatrix(Messages.Vector.SparseMatrix value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.add(value);
          onChanged();
        } else {
          matrixBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder addMatrix(
          int index, Messages.Vector.SparseMatrix value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.add(index, value);
          onChanged();
        } else {
          matrixBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder addMatrix(
          Messages.Vector.SparseMatrix.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.add(builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder addMatrix(
          int index, Messages.Vector.SparseMatrix.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.add(index, builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder addAllMatrix(
          java.lang.Iterable<? extends Messages.Vector.SparseMatrix> values) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matrix_);
          onChanged();
        } else {
          matrixBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder clearMatrix() {
        if (matrixBuilder_ == null) {
          matrix_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          matrixBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Builder removeMatrix(int index) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.remove(index);
          onChanged();
        } else {
          matrixBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Messages.Vector.SparseMatrix.Builder getMatrixBuilder(
          int index) {
        return getMatrixFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Messages.Vector.SparseMatrixOrBuilder getMatrixOrBuilder(
          int index) {
        if (matrixBuilder_ == null) {
          return matrix_.get(index);  } else {
          return matrixBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public java.util.List<? extends Messages.Vector.SparseMatrixOrBuilder> 
           getMatrixOrBuilderList() {
        if (matrixBuilder_ != null) {
          return matrixBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matrix_);
        }
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Messages.Vector.SparseMatrix.Builder addMatrixBuilder() {
        return getMatrixFieldBuilder().addBuilder(
            Messages.Vector.SparseMatrix.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public Messages.Vector.SparseMatrix.Builder addMatrixBuilder(
          int index) {
        return getMatrixFieldBuilder().addBuilder(
            index, Messages.Vector.SparseMatrix.getDefaultInstance());
      }
      /**
       * <code>repeated .Messages.SparseMatrix matrix = 11;</code>
       */
      public java.util.List<Messages.Vector.SparseMatrix.Builder> 
           getMatrixBuilderList() {
        return getMatrixFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          Messages.Vector.SparseMatrix, Messages.Vector.SparseMatrix.Builder, Messages.Vector.SparseMatrixOrBuilder> 
          getMatrixFieldBuilder() {
        if (matrixBuilder_ == null) {
          matrixBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              Messages.Vector.SparseMatrix, Messages.Vector.SparseMatrix.Builder, Messages.Vector.SparseMatrixOrBuilder>(
                  matrix_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          matrix_ = null;
        }
        return matrixBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Record64)
    }

    // @@protoc_insertion_point(class_scope:Messages.Record64)
    private static final Messages.Vector.Record64 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.Record64();
    }

    public static Messages.Vector.Record64 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.Record64 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UIndicesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.UIndices)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <code>uint32 components = 2;</code>
     * @return The components.
     */
    int getComponents();

    /**
     * <code>bool interleaved = 3;</code>
     * @return The interleaved.
     */
    boolean getInterleaved();

    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return Whether the revision field is set.
     */
    boolean hasRevision();
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return The revision.
     */
    Messages.Vector.Revision getRevision();
    /**
     * <code>.Messages.Revision revision = 4;</code>
     */
    Messages.Vector.RevisionOrBuilder getRevisionOrBuilder();

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint64 offset = 9;</code>
     * @return The offset.
     */
    long getOffset();

    /**
     * <code>repeated uint32 values = 10 [packed = true];</code>
     * @return A list containing the values.
     */
    java.util.List<java.lang.Integer> getValuesList();
    /**
     * <code>repeated uint32 values = 10 [packed = true];</code>
     * @return The count of values.
     */
    int getValuesCount();
    /**
     * <code>repeated uint32 values = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    int getValues(int index);
  }
  /**
   * Protobuf type {@code Messages.UIndices}
   */
  public static final class UIndices extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.UIndices)
      UIndicesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UIndices.newBuilder() to construct.
    private UIndices(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UIndices() {
      name_ = "";
      values_ = emptyIntList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_UIndices_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_UIndices_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.UIndices.class, Messages.Vector.UIndices.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMPONENTS_FIELD_NUMBER = 2;
    private int components_;
    /**
     * <code>uint32 components = 2;</code>
     * @return The components.
     */
    @java.lang.Override
    public int getComponents() {
      return components_;
    }

    public static final int INTERLEAVED_FIELD_NUMBER = 3;
    private boolean interleaved_;
    /**
     * <code>bool interleaved = 3;</code>
     * @return The interleaved.
     */
    @java.lang.Override
    public boolean getInterleaved() {
      return interleaved_;
    }

    public static final int REVISION_FIELD_NUMBER = 4;
    private Messages.Vector.Revision revision_;
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return Whether the revision field is set.
     */
    @java.lang.Override
    public boolean hasRevision() {
      return revision_ != null;
    }
    /**
     * <code>.Messages.Revision revision = 4;</code>
     * @return The revision.
     */
    @java.lang.Override
    public Messages.Vector.Revision getRevision() {
      return revision_ == null ? Messages.Vector.Revision.getDefaultInstance() : revision_;
    }
    /**
     * <code>.Messages.Revision revision = 4;</code>
     */
    @java.lang.Override
    public Messages.Vector.RevisionOrBuilder getRevisionOrBuilder() {
      return getRevision();
    }

    public static final int OFFSET_FIELD_NUMBER = 9;
    private long offset_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>uint64 offset = 9;</code>
     * @return The offset.
     */
    @java.lang.Override
    public long getOffset() {
      return offset_;
    }

    public static final int VALUES_FIELD_NUMBER = 10;
    private com.google.protobuf.Internal.IntList values_;
    /**
     * <code>repeated uint32 values = 10 [packed = true];</code>
     * @return A list containing the values.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getValuesList() {
      return values_;
    }
    /**
     * <code>repeated uint32 values = 10 [packed = true];</code>
     * @return The count of values.
     */
    public int getValuesCount() {
      return values_.size();
    }
    /**
     * <code>repeated uint32 values = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The values at the given index.
     */
    public int getValues(int index) {
      return values_.getInt(index);
    }
    private int valuesMemoizedSerializedSize = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (components_ != 0) {
        output.writeUInt32(2, components_);
      }
      if (interleaved_ != false) {
        output.writeBool(3, interleaved_);
      }
      if (revision_ != null) {
        output.writeMessage(4, getRevision());
      }
      if (offset_ != 0L) {
        output.writeUInt64(9, offset_);
      }
      if (getValuesList().size() > 0) {
        output.writeUInt32NoTag(82);
        output.writeUInt32NoTag(valuesMemoizedSerializedSize);
      }
      for (int i = 0; i < values_.size(); i++) {
        output.writeUInt32NoTag(values_.getInt(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (components_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, components_);
      }
      if (interleaved_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, interleaved_);
      }
      if (revision_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getRevision());
      }
      if (offset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(9, offset_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < values_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(values_.getInt(i));
        }
        size += dataSize;
        if (!getValuesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        valuesMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.UIndices)) {
        return super.equals(obj);
      }
      Messages.Vector.UIndices other = (Messages.Vector.UIndices) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (getComponents()
          != other.getComponents()) return false;
      if (getInterleaved()
          != other.getInterleaved()) return false;
      if (hasRevision() != other.hasRevision()) return false;
      if (hasRevision()) {
        if (!getRevision()
            .equals(other.getRevision())) return false;
      }
      if (getOffset()
          != other.getOffset()) return false;
      if (!getValuesList()
          .equals(other.getValuesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + COMPONENTS_FIELD_NUMBER;
      hash = (53 * hash) + getComponents();
      hash = (37 * hash) + INTERLEAVED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getInterleaved());
      if (hasRevision()) {
        hash = (37 * hash) + REVISION_FIELD_NUMBER;
        hash = (53 * hash) + getRevision().hashCode();
      }
      hash = (37 * hash) + OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getOffset());
      if (getValuesCount() > 0) {
        hash = (37 * hash) + VALUES_FIELD_NUMBER;
        hash = (53 * hash) + getValuesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.UIndices prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.UIndices}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.UIndices)
        Messages.Vector.UIndicesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_UIndices_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_UIndices_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.UIndices.class, Messages.Vector.UIndices.Builder.class);
      }

      // Construct using Messages.Vector.UIndices.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        components_ = 0;

        interleaved_ = false;

        if (revisionBuilder_ == null) {
          revision_ = null;
        } else {
          revision_ = null;
          revisionBuilder_ = null;
        }
        offset_ = 0L;

        values_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_UIndices_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.UIndices getDefaultInstanceForType() {
        return Messages.Vector.UIndices.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.UIndices build() {
        Messages.Vector.UIndices result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.UIndices buildPartial() {
        Messages.Vector.UIndices result = new Messages.Vector.UIndices(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        result.components_ = components_;
        result.interleaved_ = interleaved_;
        if (revisionBuilder_ == null) {
          result.revision_ = revision_;
        } else {
          result.revision_ = revisionBuilder_.build();
        }
        result.offset_ = offset_;
        if (((bitField0_ & 0x00000001) != 0)) {
          values_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.values_ = values_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.UIndices other) {
        if (other == Messages.Vector.UIndices.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getComponents() != 0) {
          setComponents(other.getComponents());
        }
        if (other.getInterleaved() != false) {
          setInterleaved(other.getInterleaved());
        }
        if (other.hasRevision()) {
          mergeRevision(other.getRevision());
        }
        if (other.getOffset() != 0L) {
          setOffset(other.getOffset());
        }
        if (!other.values_.isEmpty()) {
          if (values_.isEmpty()) {
            values_ = other.values_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureValuesIsMutable();
            values_.addAll(other.values_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                components_ = input.readUInt32();

                break;
              } // case 16
              case 24: {
                interleaved_ = input.readBool();

                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getRevisionFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 34
              case 72: {
                offset_ = input.readUInt64();

                break;
              } // case 72
              case 80: {
                int v = input.readUInt32();
                ensureValuesIsMutable();
                values_.addInt(v);
                break;
              } // case 80
              case 82: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureValuesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  values_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 82
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private int components_ ;
      /**
       * <code>uint32 components = 2;</code>
       * @return The components.
       */
      @java.lang.Override
      public int getComponents() {
        return components_;
      }
      /**
       * <code>uint32 components = 2;</code>
       * @param value The components to set.
       * @return This builder for chaining.
       */
      public Builder setComponents(int value) {
        
        components_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 components = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearComponents() {
        
        components_ = 0;
        onChanged();
        return this;
      }

      private boolean interleaved_ ;
      /**
       * <code>bool interleaved = 3;</code>
       * @return The interleaved.
       */
      @java.lang.Override
      public boolean getInterleaved() {
        return interleaved_;
      }
      /**
       * <code>bool interleaved = 3;</code>
       * @param value The interleaved to set.
       * @return This builder for chaining.
       */
      public Builder setInterleaved(boolean value) {
        
        interleaved_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool interleaved = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearInterleaved() {
        
        interleaved_ = false;
        onChanged();
        return this;
      }

      private Messages.Vector.Revision revision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder> revisionBuilder_;
      /**
       * <code>.Messages.Revision revision = 4;</code>
       * @return Whether the revision field is set.
       */
      public boolean hasRevision() {
        return revisionBuilder_ != null || revision_ != null;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       * @return The revision.
       */
      public Messages.Vector.Revision getRevision() {
        if (revisionBuilder_ == null) {
          return revision_ == null ? Messages.Vector.Revision.getDefaultInstance() : revision_;
        } else {
          return revisionBuilder_.getMessage();
        }
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder setRevision(Messages.Vector.Revision value) {
        if (revisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          revision_ = value;
          onChanged();
        } else {
          revisionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder setRevision(
          Messages.Vector.Revision.Builder builderForValue) {
        if (revisionBuilder_ == null) {
          revision_ = builderForValue.build();
          onChanged();
        } else {
          revisionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder mergeRevision(Messages.Vector.Revision value) {
        if (revisionBuilder_ == null) {
          if (revision_ != null) {
            revision_ =
              Messages.Vector.Revision.newBuilder(revision_).mergeFrom(value).buildPartial();
          } else {
            revision_ = value;
          }
          onChanged();
        } else {
          revisionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Builder clearRevision() {
        if (revisionBuilder_ == null) {
          revision_ = null;
          onChanged();
        } else {
          revision_ = null;
          revisionBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Messages.Vector.Revision.Builder getRevisionBuilder() {
        
        onChanged();
        return getRevisionFieldBuilder().getBuilder();
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      public Messages.Vector.RevisionOrBuilder getRevisionOrBuilder() {
        if (revisionBuilder_ != null) {
          return revisionBuilder_.getMessageOrBuilder();
        } else {
          return revision_ == null ?
              Messages.Vector.Revision.getDefaultInstance() : revision_;
        }
      }
      /**
       * <code>.Messages.Revision revision = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder> 
          getRevisionFieldBuilder() {
        if (revisionBuilder_ == null) {
          revisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              Messages.Vector.Revision, Messages.Vector.Revision.Builder, Messages.Vector.RevisionOrBuilder>(
                  getRevision(),
                  getParentForChildren(),
                  isClean());
          revision_ = null;
        }
        return revisionBuilder_;
      }

      private long offset_ ;
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(long value) {
        
        offset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>uint64 offset = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        
        offset_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList values_ = emptyIntList();
      private void ensureValuesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          values_ = mutableCopy(values_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated uint32 values = 10 [packed = true];</code>
       * @return A list containing the values.
       */
      public java.util.List<java.lang.Integer>
          getValuesList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(values_) : values_;
      }
      /**
       * <code>repeated uint32 values = 10 [packed = true];</code>
       * @return The count of values.
       */
      public int getValuesCount() {
        return values_.size();
      }
      /**
       * <code>repeated uint32 values = 10 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The values at the given index.
       */
      public int getValues(int index) {
        return values_.getInt(index);
      }
      /**
       * <code>repeated uint32 values = 10 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The values to set.
       * @return This builder for chaining.
       */
      public Builder setValues(
          int index, int value) {
        ensureValuesIsMutable();
        values_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 values = 10 [packed = true];</code>
       * @param value The values to add.
       * @return This builder for chaining.
       */
      public Builder addValues(int value) {
        ensureValuesIsMutable();
        values_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 values = 10 [packed = true];</code>
       * @param values The values to add.
       * @return This builder for chaining.
       */
      public Builder addAllValues(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureValuesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, values_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 values = 10 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearValues() {
        values_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.UIndices)
    }

    // @@protoc_insertion_point(class_scope:Messages.UIndices)
    private static final Messages.Vector.UIndices DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.UIndices();
    }

    public static Messages.Vector.UIndices getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.UIndices getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ElementsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Messages.Elements)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * each element has a unique index assigned
     * </pre>
     *
     * <code>repeated uint32 element_indices = 1 [packed = true];</code>
     * @return A list containing the elementIndices.
     */
    java.util.List<java.lang.Integer> getElementIndicesList();
    /**
     * <pre>
     * each element has a unique index assigned
     * </pre>
     *
     * <code>repeated uint32 element_indices = 1 [packed = true];</code>
     * @return The count of elementIndices.
     */
    int getElementIndicesCount();
    /**
     * <pre>
     * each element has a unique index assigned
     * </pre>
     *
     * <code>repeated uint32 element_indices = 1 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementIndices at the given index.
     */
    int getElementIndices(int index);

    /**
     * <pre>
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     * </pre>
     *
     * <code>repeated uint32 element_types = 2 [packed = true];</code>
     * @return A list containing the elementTypes.
     */
    java.util.List<java.lang.Integer> getElementTypesList();
    /**
     * <pre>
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     * </pre>
     *
     * <code>repeated uint32 element_types = 2 [packed = true];</code>
     * @return The count of elementTypes.
     */
    int getElementTypesCount();
    /**
     * <pre>
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     * </pre>
     *
     * <code>repeated uint32 element_types = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementTypes at the given index.
     */
    int getElementTypes(int index);

    /**
     * <pre>
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     * </pre>
     *
     * <code>repeated int32 element_ids = 3 [packed = true];</code>
     * @return A list containing the elementIds.
     */
    java.util.List<java.lang.Integer> getElementIdsList();
    /**
     * <pre>
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     * </pre>
     *
     * <code>repeated int32 element_ids = 3 [packed = true];</code>
     * @return The count of elementIds.
     */
    int getElementIdsCount();
    /**
     * <pre>
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     * </pre>
     *
     * <code>repeated int32 element_ids = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementIds at the given index.
     */
    int getElementIds(int index);

    /**
     * <pre>
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     * </pre>
     *
     * <code>repeated uint32 node_indices = 4 [packed = true];</code>
     * @return A list containing the nodeIndices.
     */
    java.util.List<java.lang.Integer> getNodeIndicesList();
    /**
     * <pre>
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     * </pre>
     *
     * <code>repeated uint32 node_indices = 4 [packed = true];</code>
     * @return The count of nodeIndices.
     */
    int getNodeIndicesCount();
    /**
     * <pre>
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     * </pre>
     *
     * <code>repeated uint32 node_indices = 4 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The nodeIndices at the given index.
     */
    int getNodeIndices(int index);

    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated double element_centers = 10 [packed = true];</code>
     * @return A list containing the elementCenters.
     */
    java.util.List<java.lang.Double> getElementCentersList();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated double element_centers = 10 [packed = true];</code>
     * @return The count of elementCenters.
     */
    int getElementCentersCount();
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated double element_centers = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementCenters at the given index.
     */
    double getElementCenters(int index);

    /**
     * <pre>
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     * </pre>
     *
     * <code>repeated double element_measures = 11 [packed = true];</code>
     * @return A list containing the elementMeasures.
     */
    java.util.List<java.lang.Double> getElementMeasuresList();
    /**
     * <pre>
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     * </pre>
     *
     * <code>repeated double element_measures = 11 [packed = true];</code>
     * @return The count of elementMeasures.
     */
    int getElementMeasuresCount();
    /**
     * <pre>
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     * </pre>
     *
     * <code>repeated double element_measures = 11 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementMeasures at the given index.
     */
    double getElementMeasures(int index);
  }
  /**
   * Protobuf type {@code Messages.Elements}
   */
  public static final class Elements extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Messages.Elements)
      ElementsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Elements.newBuilder() to construct.
    private Elements(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Elements() {
      elementIndices_ = emptyIntList();
      elementTypes_ = emptyIntList();
      elementIds_ = emptyIntList();
      nodeIndices_ = emptyIntList();
      elementCenters_ = emptyDoubleList();
      elementMeasures_ = emptyDoubleList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Messages.Vector.internal_static_Messages_Elements_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Messages.Vector.internal_static_Messages_Elements_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Messages.Vector.Elements.class, Messages.Vector.Elements.Builder.class);
    }

    public static final int ELEMENT_INDICES_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList elementIndices_;
    /**
     * <pre>
     * each element has a unique index assigned
     * </pre>
     *
     * <code>repeated uint32 element_indices = 1 [packed = true];</code>
     * @return A list containing the elementIndices.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getElementIndicesList() {
      return elementIndices_;
    }
    /**
     * <pre>
     * each element has a unique index assigned
     * </pre>
     *
     * <code>repeated uint32 element_indices = 1 [packed = true];</code>
     * @return The count of elementIndices.
     */
    public int getElementIndicesCount() {
      return elementIndices_.size();
    }
    /**
     * <pre>
     * each element has a unique index assigned
     * </pre>
     *
     * <code>repeated uint32 element_indices = 1 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementIndices at the given index.
     */
    public int getElementIndices(int index) {
      return elementIndices_.getInt(index);
    }
    private int elementIndicesMemoizedSerializedSize = -1;

    public static final int ELEMENT_TYPES_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.IntList elementTypes_;
    /**
     * <pre>
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     * </pre>
     *
     * <code>repeated uint32 element_types = 2 [packed = true];</code>
     * @return A list containing the elementTypes.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getElementTypesList() {
      return elementTypes_;
    }
    /**
     * <pre>
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     * </pre>
     *
     * <code>repeated uint32 element_types = 2 [packed = true];</code>
     * @return The count of elementTypes.
     */
    public int getElementTypesCount() {
      return elementTypes_.size();
    }
    /**
     * <pre>
     * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
     * </pre>
     *
     * <code>repeated uint32 element_types = 2 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementTypes at the given index.
     */
    public int getElementTypes(int index) {
      return elementTypes_.getInt(index);
    }
    private int elementTypesMemoizedSerializedSize = -1;

    public static final int ELEMENT_IDS_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.IntList elementIds_;
    /**
     * <pre>
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     * </pre>
     *
     * <code>repeated int32 element_ids = 3 [packed = true];</code>
     * @return A list containing the elementIds.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getElementIdsList() {
      return elementIds_;
    }
    /**
     * <pre>
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     * </pre>
     *
     * <code>repeated int32 element_ids = 3 [packed = true];</code>
     * @return The count of elementIds.
     */
    public int getElementIdsCount() {
      return elementIds_.size();
    }
    /**
     * <pre>
     * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
     * </pre>
     *
     * <code>repeated int32 element_ids = 3 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementIds at the given index.
     */
    public int getElementIds(int index) {
      return elementIds_.getInt(index);
    }
    private int elementIdsMemoizedSerializedSize = -1;

    public static final int NODE_INDICES_FIELD_NUMBER = 4;
    private com.google.protobuf.Internal.IntList nodeIndices_;
    /**
     * <pre>
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     * </pre>
     *
     * <code>repeated uint32 node_indices = 4 [packed = true];</code>
     * @return A list containing the nodeIndices.
     */
    @java.lang.Override
    public java.util.List<java.lang.Integer>
        getNodeIndicesList() {
      return nodeIndices_;
    }
    /**
     * <pre>
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     * </pre>
     *
     * <code>repeated uint32 node_indices = 4 [packed = true];</code>
     * @return The count of nodeIndices.
     */
    public int getNodeIndicesCount() {
      return nodeIndices_.size();
    }
    /**
     * <pre>
     * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
     * </pre>
     *
     * <code>repeated uint32 node_indices = 4 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The nodeIndices at the given index.
     */
    public int getNodeIndices(int index) {
      return nodeIndices_.getInt(index);
    }
    private int nodeIndicesMemoizedSerializedSize = -1;

    public static final int ELEMENT_CENTERS_FIELD_NUMBER = 10;
    private com.google.protobuf.Internal.DoubleList elementCenters_;
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated double element_centers = 10 [packed = true];</code>
     * @return A list containing the elementCenters.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getElementCentersList() {
      return elementCenters_;
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated double element_centers = 10 [packed = true];</code>
     * @return The count of elementCenters.
     */
    public int getElementCentersCount() {
      return elementCenters_.size();
    }
    /**
     * <pre>
     *reserved
     * </pre>
     *
     * <code>repeated double element_centers = 10 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementCenters at the given index.
     */
    public double getElementCenters(int index) {
      return elementCenters_.getDouble(index);
    }
    private int elementCentersMemoizedSerializedSize = -1;

    public static final int ELEMENT_MEASURES_FIELD_NUMBER = 11;
    private com.google.protobuf.Internal.DoubleList elementMeasures_;
    /**
     * <pre>
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     * </pre>
     *
     * <code>repeated double element_measures = 11 [packed = true];</code>
     * @return A list containing the elementMeasures.
     */
    @java.lang.Override
    public java.util.List<java.lang.Double>
        getElementMeasuresList() {
      return elementMeasures_;
    }
    /**
     * <pre>
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     * </pre>
     *
     * <code>repeated double element_measures = 11 [packed = true];</code>
     * @return The count of elementMeasures.
     */
    public int getElementMeasuresCount() {
      return elementMeasures_.size();
    }
    /**
     * <pre>
     * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
     * </pre>
     *
     * <code>repeated double element_measures = 11 [packed = true];</code>
     * @param index The index of the element to return.
     * @return The elementMeasures at the given index.
     */
    public double getElementMeasures(int index) {
      return elementMeasures_.getDouble(index);
    }
    private int elementMeasuresMemoizedSerializedSize = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getElementIndicesList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(elementIndicesMemoizedSerializedSize);
      }
      for (int i = 0; i < elementIndices_.size(); i++) {
        output.writeUInt32NoTag(elementIndices_.getInt(i));
      }
      if (getElementTypesList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(elementTypesMemoizedSerializedSize);
      }
      for (int i = 0; i < elementTypes_.size(); i++) {
        output.writeUInt32NoTag(elementTypes_.getInt(i));
      }
      if (getElementIdsList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(elementIdsMemoizedSerializedSize);
      }
      for (int i = 0; i < elementIds_.size(); i++) {
        output.writeInt32NoTag(elementIds_.getInt(i));
      }
      if (getNodeIndicesList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(nodeIndicesMemoizedSerializedSize);
      }
      for (int i = 0; i < nodeIndices_.size(); i++) {
        output.writeUInt32NoTag(nodeIndices_.getInt(i));
      }
      if (getElementCentersList().size() > 0) {
        output.writeUInt32NoTag(82);
        output.writeUInt32NoTag(elementCentersMemoizedSerializedSize);
      }
      for (int i = 0; i < elementCenters_.size(); i++) {
        output.writeDoubleNoTag(elementCenters_.getDouble(i));
      }
      if (getElementMeasuresList().size() > 0) {
        output.writeUInt32NoTag(90);
        output.writeUInt32NoTag(elementMeasuresMemoizedSerializedSize);
      }
      for (int i = 0; i < elementMeasures_.size(); i++) {
        output.writeDoubleNoTag(elementMeasures_.getDouble(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < elementIndices_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(elementIndices_.getInt(i));
        }
        size += dataSize;
        if (!getElementIndicesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        elementIndicesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < elementTypes_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(elementTypes_.getInt(i));
        }
        size += dataSize;
        if (!getElementTypesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        elementTypesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < elementIds_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(elementIds_.getInt(i));
        }
        size += dataSize;
        if (!getElementIdsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        elementIdsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < nodeIndices_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(nodeIndices_.getInt(i));
        }
        size += dataSize;
        if (!getNodeIndicesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        nodeIndicesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getElementCentersList().size();
        size += dataSize;
        if (!getElementCentersList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        elementCentersMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getElementMeasuresList().size();
        size += dataSize;
        if (!getElementMeasuresList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        elementMeasuresMemoizedSerializedSize = dataSize;
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof Messages.Vector.Elements)) {
        return super.equals(obj);
      }
      Messages.Vector.Elements other = (Messages.Vector.Elements) obj;

      if (!getElementIndicesList()
          .equals(other.getElementIndicesList())) return false;
      if (!getElementTypesList()
          .equals(other.getElementTypesList())) return false;
      if (!getElementIdsList()
          .equals(other.getElementIdsList())) return false;
      if (!getNodeIndicesList()
          .equals(other.getNodeIndicesList())) return false;
      if (!getElementCentersList()
          .equals(other.getElementCentersList())) return false;
      if (!getElementMeasuresList()
          .equals(other.getElementMeasuresList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getElementIndicesCount() > 0) {
        hash = (37 * hash) + ELEMENT_INDICES_FIELD_NUMBER;
        hash = (53 * hash) + getElementIndicesList().hashCode();
      }
      if (getElementTypesCount() > 0) {
        hash = (37 * hash) + ELEMENT_TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getElementTypesList().hashCode();
      }
      if (getElementIdsCount() > 0) {
        hash = (37 * hash) + ELEMENT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getElementIdsList().hashCode();
      }
      if (getNodeIndicesCount() > 0) {
        hash = (37 * hash) + NODE_INDICES_FIELD_NUMBER;
        hash = (53 * hash) + getNodeIndicesList().hashCode();
      }
      if (getElementCentersCount() > 0) {
        hash = (37 * hash) + ELEMENT_CENTERS_FIELD_NUMBER;
        hash = (53 * hash) + getElementCentersList().hashCode();
      }
      if (getElementMeasuresCount() > 0) {
        hash = (37 * hash) + ELEMENT_MEASURES_FIELD_NUMBER;
        hash = (53 * hash) + getElementMeasuresList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(Messages.Vector.Elements prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Messages.Elements}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Messages.Elements)
        Messages.Vector.ElementsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Messages.Vector.internal_static_Messages_Elements_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Messages.Vector.internal_static_Messages_Elements_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Messages.Vector.Elements.class, Messages.Vector.Elements.Builder.class);
      }

      // Construct using Messages.Vector.Elements.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        elementIndices_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        elementTypes_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        elementIds_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000004);
        nodeIndices_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000008);
        elementCenters_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000010);
        elementMeasures_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Messages.Vector.internal_static_Messages_Elements_descriptor;
      }

      @java.lang.Override
      public Messages.Vector.Elements getDefaultInstanceForType() {
        return Messages.Vector.Elements.getDefaultInstance();
      }

      @java.lang.Override
      public Messages.Vector.Elements build() {
        Messages.Vector.Elements result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public Messages.Vector.Elements buildPartial() {
        Messages.Vector.Elements result = new Messages.Vector.Elements(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          elementIndices_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.elementIndices_ = elementIndices_;
        if (((bitField0_ & 0x00000002) != 0)) {
          elementTypes_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.elementTypes_ = elementTypes_;
        if (((bitField0_ & 0x00000004) != 0)) {
          elementIds_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.elementIds_ = elementIds_;
        if (((bitField0_ & 0x00000008) != 0)) {
          nodeIndices_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.nodeIndices_ = nodeIndices_;
        if (((bitField0_ & 0x00000010) != 0)) {
          elementCenters_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.elementCenters_ = elementCenters_;
        if (((bitField0_ & 0x00000020) != 0)) {
          elementMeasures_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.elementMeasures_ = elementMeasures_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(Messages.Vector.Elements other) {
        if (other == Messages.Vector.Elements.getDefaultInstance()) return this;
        if (!other.elementIndices_.isEmpty()) {
          if (elementIndices_.isEmpty()) {
            elementIndices_ = other.elementIndices_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureElementIndicesIsMutable();
            elementIndices_.addAll(other.elementIndices_);
          }
          onChanged();
        }
        if (!other.elementTypes_.isEmpty()) {
          if (elementTypes_.isEmpty()) {
            elementTypes_ = other.elementTypes_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureElementTypesIsMutable();
            elementTypes_.addAll(other.elementTypes_);
          }
          onChanged();
        }
        if (!other.elementIds_.isEmpty()) {
          if (elementIds_.isEmpty()) {
            elementIds_ = other.elementIds_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureElementIdsIsMutable();
            elementIds_.addAll(other.elementIds_);
          }
          onChanged();
        }
        if (!other.nodeIndices_.isEmpty()) {
          if (nodeIndices_.isEmpty()) {
            nodeIndices_ = other.nodeIndices_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureNodeIndicesIsMutable();
            nodeIndices_.addAll(other.nodeIndices_);
          }
          onChanged();
        }
        if (!other.elementCenters_.isEmpty()) {
          if (elementCenters_.isEmpty()) {
            elementCenters_ = other.elementCenters_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureElementCentersIsMutable();
            elementCenters_.addAll(other.elementCenters_);
          }
          onChanged();
        }
        if (!other.elementMeasures_.isEmpty()) {
          if (elementMeasures_.isEmpty()) {
            elementMeasures_ = other.elementMeasures_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureElementMeasuresIsMutable();
            elementMeasures_.addAll(other.elementMeasures_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int v = input.readUInt32();
                ensureElementIndicesIsMutable();
                elementIndices_.addInt(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureElementIndicesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  elementIndices_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 16: {
                int v = input.readUInt32();
                ensureElementTypesIsMutable();
                elementTypes_.addInt(v);
                break;
              } // case 16
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureElementTypesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  elementTypes_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 18
              case 24: {
                int v = input.readInt32();
                ensureElementIdsIsMutable();
                elementIds_.addInt(v);
                break;
              } // case 24
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureElementIdsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  elementIds_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 32: {
                int v = input.readUInt32();
                ensureNodeIndicesIsMutable();
                nodeIndices_.addInt(v);
                break;
              } // case 32
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureNodeIndicesIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  nodeIndices_.addInt(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              } // case 34
              case 81: {
                double v = input.readDouble();
                ensureElementCentersIsMutable();
                elementCenters_.addDouble(v);
                break;
              } // case 81
              case 82: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureElementCentersIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  elementCenters_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 82
              case 89: {
                double v = input.readDouble();
                ensureElementMeasuresIsMutable();
                elementMeasures_.addDouble(v);
                break;
              } // case 89
              case 90: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureElementMeasuresIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  elementMeasures_.addDouble(input.readDouble());
                }
                input.popLimit(limit);
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList elementIndices_ = emptyIntList();
      private void ensureElementIndicesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          elementIndices_ = mutableCopy(elementIndices_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * each element has a unique index assigned
       * </pre>
       *
       * <code>repeated uint32 element_indices = 1 [packed = true];</code>
       * @return A list containing the elementIndices.
       */
      public java.util.List<java.lang.Integer>
          getElementIndicesList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(elementIndices_) : elementIndices_;
      }
      /**
       * <pre>
       * each element has a unique index assigned
       * </pre>
       *
       * <code>repeated uint32 element_indices = 1 [packed = true];</code>
       * @return The count of elementIndices.
       */
      public int getElementIndicesCount() {
        return elementIndices_.size();
      }
      /**
       * <pre>
       * each element has a unique index assigned
       * </pre>
       *
       * <code>repeated uint32 element_indices = 1 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The elementIndices at the given index.
       */
      public int getElementIndices(int index) {
        return elementIndices_.getInt(index);
      }
      /**
       * <pre>
       * each element has a unique index assigned
       * </pre>
       *
       * <code>repeated uint32 element_indices = 1 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The elementIndices to set.
       * @return This builder for chaining.
       */
      public Builder setElementIndices(
          int index, int value) {
        ensureElementIndicesIsMutable();
        elementIndices_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * each element has a unique index assigned
       * </pre>
       *
       * <code>repeated uint32 element_indices = 1 [packed = true];</code>
       * @param value The elementIndices to add.
       * @return This builder for chaining.
       */
      public Builder addElementIndices(int value) {
        ensureElementIndicesIsMutable();
        elementIndices_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * each element has a unique index assigned
       * </pre>
       *
       * <code>repeated uint32 element_indices = 1 [packed = true];</code>
       * @param values The elementIndices to add.
       * @return This builder for chaining.
       */
      public Builder addAllElementIndices(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureElementIndicesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, elementIndices_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * each element has a unique index assigned
       * </pre>
       *
       * <code>repeated uint32 element_indices = 1 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearElementIndices() {
        elementIndices_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList elementTypes_ = emptyIntList();
      private void ensureElementTypesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          elementTypes_ = mutableCopy(elementTypes_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
       * </pre>
       *
       * <code>repeated uint32 element_types = 2 [packed = true];</code>
       * @return A list containing the elementTypes.
       */
      public java.util.List<java.lang.Integer>
          getElementTypesList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(elementTypes_) : elementTypes_;
      }
      /**
       * <pre>
       * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
       * </pre>
       *
       * <code>repeated uint32 element_types = 2 [packed = true];</code>
       * @return The count of elementTypes.
       */
      public int getElementTypesCount() {
        return elementTypes_.size();
      }
      /**
       * <pre>
       * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
       * </pre>
       *
       * <code>repeated uint32 element_types = 2 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The elementTypes at the given index.
       */
      public int getElementTypes(int index) {
        return elementTypes_.getInt(index);
      }
      /**
       * <pre>
       * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
       * </pre>
       *
       * <code>repeated uint32 element_types = 2 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The elementTypes to set.
       * @return This builder for chaining.
       */
      public Builder setElementTypes(
          int index, int value) {
        ensureElementTypesIsMutable();
        elementTypes_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
       * </pre>
       *
       * <code>repeated uint32 element_types = 2 [packed = true];</code>
       * @param value The elementTypes to add.
       * @return This builder for chaining.
       */
      public Builder addElementTypes(int value) {
        ensureElementTypesIsMutable();
        elementTypes_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
       * </pre>
       *
       * <code>repeated uint32 element_types = 2 [packed = true];</code>
       * @param values The elementTypes to add.
       * @return This builder for chaining.
       */
      public Builder addAllElementTypes(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureElementTypesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, elementTypes_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * type convention (see xcompute-server documentation, enums for tri3, tet4, quad4, ... , tet 10, ...)
       * </pre>
       *
       * <code>repeated uint32 element_types = 2 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearElementTypes() {
        elementTypes_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList elementIds_ = emptyIntList();
      private void ensureElementIdsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          elementIds_ = mutableCopy(elementIds_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
       * </pre>
       *
       * <code>repeated int32 element_ids = 3 [packed = true];</code>
       * @return A list containing the elementIds.
       */
      public java.util.List<java.lang.Integer>
          getElementIdsList() {
        return ((bitField0_ & 0x00000004) != 0) ?
                 java.util.Collections.unmodifiableList(elementIds_) : elementIds_;
      }
      /**
       * <pre>
       * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
       * </pre>
       *
       * <code>repeated int32 element_ids = 3 [packed = true];</code>
       * @return The count of elementIds.
       */
      public int getElementIdsCount() {
        return elementIds_.size();
      }
      /**
       * <pre>
       * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
       * </pre>
       *
       * <code>repeated int32 element_ids = 3 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The elementIds at the given index.
       */
      public int getElementIds(int index) {
        return elementIds_.getInt(index);
      }
      /**
       * <pre>
       * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
       * </pre>
       *
       * <code>repeated int32 element_ids = 3 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The elementIds to set.
       * @return This builder for chaining.
       */
      public Builder setElementIds(
          int index, int value) {
        ensureElementIdsIsMutable();
        elementIds_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
       * </pre>
       *
       * <code>repeated int32 element_ids = 3 [packed = true];</code>
       * @param value The elementIds to add.
       * @return This builder for chaining.
       */
      public Builder addElementIds(int value) {
        ensureElementIdsIsMutable();
        elementIds_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
       * </pre>
       *
       * <code>repeated int32 element_ids = 3 [packed = true];</code>
       * @param values The elementIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllElementIds(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureElementIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, elementIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * region identifier (unique within a type of region, e.g. surface 0, surface 1, ..., volume 0, ... )
       * </pre>
       *
       * <code>repeated int32 element_ids = 3 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearElementIds() {
        elementIds_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList nodeIndices_ = emptyIntList();
      private void ensureNodeIndicesIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          nodeIndices_ = mutableCopy(nodeIndices_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
       * </pre>
       *
       * <code>repeated uint32 node_indices = 4 [packed = true];</code>
       * @return A list containing the nodeIndices.
       */
      public java.util.List<java.lang.Integer>
          getNodeIndicesList() {
        return ((bitField0_ & 0x00000008) != 0) ?
                 java.util.Collections.unmodifiableList(nodeIndices_) : nodeIndices_;
      }
      /**
       * <pre>
       * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
       * </pre>
       *
       * <code>repeated uint32 node_indices = 4 [packed = true];</code>
       * @return The count of nodeIndices.
       */
      public int getNodeIndicesCount() {
        return nodeIndices_.size();
      }
      /**
       * <pre>
       * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
       * </pre>
       *
       * <code>repeated uint32 node_indices = 4 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The nodeIndices at the given index.
       */
      public int getNodeIndices(int index) {
        return nodeIndices_.getInt(index);
      }
      /**
       * <pre>
       * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
       * </pre>
       *
       * <code>repeated uint32 node_indices = 4 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The nodeIndices to set.
       * @return This builder for chaining.
       */
      public Builder setNodeIndices(
          int index, int value) {
        ensureNodeIndicesIsMutable();
        nodeIndices_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
       * </pre>
       *
       * <code>repeated uint32 node_indices = 4 [packed = true];</code>
       * @param value The nodeIndices to add.
       * @return This builder for chaining.
       */
      public Builder addNodeIndices(int value) {
        ensureNodeIndicesIsMutable();
        nodeIndices_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
       * </pre>
       *
       * <code>repeated uint32 node_indices = 4 [packed = true];</code>
       * @param values The nodeIndices to add.
       * @return This builder for chaining.
       */
      public Builder addAllNodeIndices(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureNodeIndicesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, nodeIndices_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * node indices (unique within this region, e.g. nodes 0, 1, 3, 5, 7 , 11, 13, 17 ... 41 ...)
       * </pre>
       *
       * <code>repeated uint32 node_indices = 4 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearNodeIndices() {
        nodeIndices_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList elementCenters_ = emptyDoubleList();
      private void ensureElementCentersIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          elementCenters_ = mutableCopy(elementCenters_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated double element_centers = 10 [packed = true];</code>
       * @return A list containing the elementCenters.
       */
      public java.util.List<java.lang.Double>
          getElementCentersList() {
        return ((bitField0_ & 0x00000010) != 0) ?
                 java.util.Collections.unmodifiableList(elementCenters_) : elementCenters_;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated double element_centers = 10 [packed = true];</code>
       * @return The count of elementCenters.
       */
      public int getElementCentersCount() {
        return elementCenters_.size();
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated double element_centers = 10 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The elementCenters at the given index.
       */
      public double getElementCenters(int index) {
        return elementCenters_.getDouble(index);
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated double element_centers = 10 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The elementCenters to set.
       * @return This builder for chaining.
       */
      public Builder setElementCenters(
          int index, double value) {
        ensureElementCentersIsMutable();
        elementCenters_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated double element_centers = 10 [packed = true];</code>
       * @param value The elementCenters to add.
       * @return This builder for chaining.
       */
      public Builder addElementCenters(double value) {
        ensureElementCentersIsMutable();
        elementCenters_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated double element_centers = 10 [packed = true];</code>
       * @param values The elementCenters to add.
       * @return This builder for chaining.
       */
      public Builder addAllElementCenters(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureElementCentersIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, elementCenters_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *reserved
       * </pre>
       *
       * <code>repeated double element_centers = 10 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearElementCenters() {
        elementCenters_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.DoubleList elementMeasures_ = emptyDoubleList();
      private void ensureElementMeasuresIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          elementMeasures_ = mutableCopy(elementMeasures_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <pre>
       * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
       * </pre>
       *
       * <code>repeated double element_measures = 11 [packed = true];</code>
       * @return A list containing the elementMeasures.
       */
      public java.util.List<java.lang.Double>
          getElementMeasuresList() {
        return ((bitField0_ & 0x00000020) != 0) ?
                 java.util.Collections.unmodifiableList(elementMeasures_) : elementMeasures_;
      }
      /**
       * <pre>
       * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
       * </pre>
       *
       * <code>repeated double element_measures = 11 [packed = true];</code>
       * @return The count of elementMeasures.
       */
      public int getElementMeasuresCount() {
        return elementMeasures_.size();
      }
      /**
       * <pre>
       * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
       * </pre>
       *
       * <code>repeated double element_measures = 11 [packed = true];</code>
       * @param index The index of the element to return.
       * @return The elementMeasures at the given index.
       */
      public double getElementMeasures(int index) {
        return elementMeasures_.getDouble(index);
      }
      /**
       * <pre>
       * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
       * </pre>
       *
       * <code>repeated double element_measures = 11 [packed = true];</code>
       * @param index The index to set the value at.
       * @param value The elementMeasures to set.
       * @return This builder for chaining.
       */
      public Builder setElementMeasures(
          int index, double value) {
        ensureElementMeasuresIsMutable();
        elementMeasures_.setDouble(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
       * </pre>
       *
       * <code>repeated double element_measures = 11 [packed = true];</code>
       * @param value The elementMeasures to add.
       * @return This builder for chaining.
       */
      public Builder addElementMeasures(double value) {
        ensureElementMeasuresIsMutable();
        elementMeasures_.addDouble(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
       * </pre>
       *
       * <code>repeated double element_measures = 11 [packed = true];</code>
       * @param values The elementMeasures to add.
       * @return This builder for chaining.
       */
      public Builder addAllElementMeasures(
          java.lang.Iterable<? extends java.lang.Double> values) {
        ensureElementMeasuresIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, elementMeasures_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * optional. element measure could be lengths (edges), areas (faces), or volumes (cells) values (scalar or nDim-component vector)
       * </pre>
       *
       * <code>repeated double element_measures = 11 [packed = true];</code>
       * @return This builder for chaining.
       */
      public Builder clearElementMeasures() {
        elementMeasures_ = emptyDoubleList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:Messages.Elements)
    }

    // @@protoc_insertion_point(class_scope:Messages.Elements)
    private static final Messages.Vector.Elements DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Messages.Vector.Elements();
    }

    public static Messages.Vector.Elements getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public Messages.Vector.Elements getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_File_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_File_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_DirentNode_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_DirentNode_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Revision_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Revision_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Extrema_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Extrema_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Vector32_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Vector32_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Vector64_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Vector64_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_SparseMatrix_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_SparseMatrix_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Rule_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Rule_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Record64_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Record64_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_UIndices_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_UIndices_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Messages_Elements_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Messages_Elements_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\014vector.proto\022\010Messages\"y\n\004File\022\014\n\004name" +
      "\030\001 \001(\t\022\017\n\007payload\030\002 \001(\014\022\020\n\010is_local\030\003 \001(" +
      "\010\022\023\n\013is_exported\030\004 \001(\010\022\024\n\014time_created\030\n" +
      " \001(\004\022\025\n\rtime_modified\030\013 \001(\004\"S\n\nDirentNod" +
      "e\022\017\n\007dirname\030\001 \001(\t\022\r\n\005files\030\002 \003(\t\022%\n\007sub" +
      "dirs\030\003 \003(\0132\024.Messages.DirentNode\"0\n\010Revi" +
      "sion\022\021\n\tmajor_rev\030\001 \001(\004\022\021\n\tminor_rev\030\002 \001" +
      "(\004\"I\n\007Extrema\022\014\n\004dims\030\001 \001(\r\022\017\n\003min\030\002 \003(\001" +
      "B\002\020\001\022\017\n\003max\030\003 \003(\001B\002\020\001\022\016\n\006is_set\030\004 \001(\010\"\302\001" +
      "\n\010Vector32\022\014\n\004name\030\001 \001(\t\022\022\n\ncomponents\030\002" +
      " \001(\r\022\023\n\013interleaved\030\003 \001(\010\022$\n\010revision\030\004 " +
      "\001(\0132\022.Messages.Revision\022\r\n\005units\030\005 \001(\t\022\017" +
      "\n\007comment\030\006 \001(\t\022\016\n\006offset\030\t \001(\004\022\022\n\006value" +
      "s\030\n \003(\002B\002\020\001\022\025\n\tsize_hint\030\013 \003(\rB\002\020\001\"\302\001\n\010V" +
      "ector64\022\014\n\004name\030\001 \001(\t\022\022\n\ncomponents\030\002 \001(" +
      "\r\022\023\n\013interleaved\030\003 \001(\010\022$\n\010revision\030\004 \001(\013" +
      "2\022.Messages.Revision\022\r\n\005units\030\005 \001(\t\022\017\n\007c" +
      "omment\030\006 \001(\t\022\016\n\006offset\030\t \001(\004\022\022\n\006values\030\n" +
      " \003(\001B\002\020\001\022\025\n\tsize_hint\030\013 \003(\rB\002\020\001\"\177\n\014Spars" +
      "eMatrix\022\014\n\004name\030\001 \001(\t\022\025\n\tsize_hint\030\002 \003(\r" +
      "B\002\020\001\022\023\n\007indices\030\003 \003(\rB\002\020\001\022\022\n\006values\030\004 \003(" +
      "\001B\002\020\001\022!\n\006bounds\030\005 \001(\0132\021.Messages.Extrema" +
      "\"v\n\004Rule\022\n\n\002pk\030\001 \001(\t\022\n\n\002op\030\002 \001(\r\022\r\n\005valu" +
      "e\030\003 \001(\001\022\022\n\nalgorithms\030\004 \003(\t\022\030\n\014failed_no" +
      "des\030\005 \003(\rB\002\020\001\022\031\n\rfailed_values\030\006 \003(\001B\002\020\001" +
      "\"\323\001\n\010Record64\022\014\n\004name\030\001 \001(\t\022\r\n\005owner\030\002 \001" +
      "(\t\022$\n\010revision\030\003 \001(\0132\022.Messages.Revision" +
      "\022\024\n\014length_units\030\010 \001(\r\022$\n\014requirements\030\t" +
      " \003(\0132\016.Messages.Rule\022 \n\004data\030\n \003(\0132\022.Mes" +
      "sages.Vector64\022&\n\006matrix\030\013 \003(\0132\026.Message" +
      "s.SparseMatrix\"\213\001\n\010UIndices\022\014\n\004name\030\001 \001(" +
      "\t\022\022\n\ncomponents\030\002 \001(\r\022\023\n\013interleaved\030\003 \001" +
      "(\010\022$\n\010revision\030\004 \001(\0132\022.Messages.Revision" +
      "\022\016\n\006offset\030\t \001(\004\022\022\n\006values\030\n \003(\rB\002\020\001\"\260\001\n" +
      "\010Elements\022\033\n\017element_indices\030\001 \003(\rB\002\020\001\022\031" +
      "\n\relement_types\030\002 \003(\rB\002\020\001\022\027\n\013element_ids" +
      "\030\003 \003(\005B\002\020\001\022\030\n\014node_indices\030\004 \003(\rB\002\020\001\022\033\n\017" +
      "element_centers\030\n \003(\001B\002\020\001\022\034\n\020element_mea" +
      "sures\030\013 \003(\001B\002\020\001B\003\370\001\001b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_Messages_File_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_Messages_File_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_File_descriptor,
        new java.lang.String[] { "Name", "Payload", "IsLocal", "IsExported", "TimeCreated", "TimeModified", });
    internal_static_Messages_DirentNode_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_Messages_DirentNode_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_DirentNode_descriptor,
        new java.lang.String[] { "Dirname", "Files", "Subdirs", });
    internal_static_Messages_Revision_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_Messages_Revision_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Revision_descriptor,
        new java.lang.String[] { "MajorRev", "MinorRev", });
    internal_static_Messages_Extrema_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_Messages_Extrema_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Extrema_descriptor,
        new java.lang.String[] { "Dims", "Min", "Max", "IsSet", });
    internal_static_Messages_Vector32_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_Messages_Vector32_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Vector32_descriptor,
        new java.lang.String[] { "Name", "Components", "Interleaved", "Revision", "Units", "Comment", "Offset", "Values", "SizeHint", });
    internal_static_Messages_Vector64_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_Messages_Vector64_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Vector64_descriptor,
        new java.lang.String[] { "Name", "Components", "Interleaved", "Revision", "Units", "Comment", "Offset", "Values", "SizeHint", });
    internal_static_Messages_SparseMatrix_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_Messages_SparseMatrix_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_SparseMatrix_descriptor,
        new java.lang.String[] { "Name", "SizeHint", "Indices", "Values", "Bounds", });
    internal_static_Messages_Rule_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_Messages_Rule_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Rule_descriptor,
        new java.lang.String[] { "Pk", "Op", "Value", "Algorithms", "FailedNodes", "FailedValues", });
    internal_static_Messages_Record64_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_Messages_Record64_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Record64_descriptor,
        new java.lang.String[] { "Name", "Owner", "Revision", "LengthUnits", "Requirements", "Data", "Matrix", });
    internal_static_Messages_UIndices_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_Messages_UIndices_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_UIndices_descriptor,
        new java.lang.String[] { "Name", "Components", "Interleaved", "Revision", "Offset", "Values", });
    internal_static_Messages_Elements_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_Messages_Elements_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Messages_Elements_descriptor,
        new java.lang.String[] { "ElementIndices", "ElementTypes", "ElementIds", "NodeIndices", "ElementCenters", "ElementMeasures", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
