// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: bazel-out/local-fastbuild/bin/src/main/protobuf/libbuild_java_proto_srcjar.srcjar.preprocessed/build.proto

package com.google.devtools.build.lib.query2.proto.proto2api;

public final class Build {
  private Build() {}
  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 LicenseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.License)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string license_type = 1;</code>
     */
    java.util.List<java.lang.String>
        getLicenseTypeList();
    /**
     * <code>repeated string license_type = 1;</code>
     */
    int getLicenseTypeCount();
    /**
     * <code>repeated string license_type = 1;</code>
     */
    java.lang.String getLicenseType(int index);
    /**
     * <code>repeated string license_type = 1;</code>
     */
    com.google.protobuf.ByteString
        getLicenseTypeBytes(int index);

    /**
     * <code>repeated string exception = 2;</code>
     */
    java.util.List<java.lang.String>
        getExceptionList();
    /**
     * <code>repeated string exception = 2;</code>
     */
    int getExceptionCount();
    /**
     * <code>repeated string exception = 2;</code>
     */
    java.lang.String getException(int index);
    /**
     * <code>repeated string exception = 2;</code>
     */
    com.google.protobuf.ByteString
        getExceptionBytes(int index);
  }
  /**
   * Protobuf type {@code blaze_query.License}
   */
  public  static final class License extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.License)
      LicenseOrBuilder {
    // Use License.newBuilder() to construct.
    private License(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private License() {
      licenseType_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      exception_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private License(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                licenseType_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              licenseType_.add(bs);
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                exception_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              exception_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          licenseType_ = licenseType_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          exception_ = exception_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_License_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_License_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder.class);
    }

    public static final int LICENSE_TYPE_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList licenseType_;
    /**
     * <code>repeated string license_type = 1;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getLicenseTypeList() {
      return licenseType_;
    }
    /**
     * <code>repeated string license_type = 1;</code>
     */
    public int getLicenseTypeCount() {
      return licenseType_.size();
    }
    /**
     * <code>repeated string license_type = 1;</code>
     */
    public java.lang.String getLicenseType(int index) {
      return licenseType_.get(index);
    }
    /**
     * <code>repeated string license_type = 1;</code>
     */
    public com.google.protobuf.ByteString
        getLicenseTypeBytes(int index) {
      return licenseType_.getByteString(index);
    }

    public static final int EXCEPTION_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList exception_;
    /**
     * <code>repeated string exception = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getExceptionList() {
      return exception_;
    }
    /**
     * <code>repeated string exception = 2;</code>
     */
    public int getExceptionCount() {
      return exception_.size();
    }
    /**
     * <code>repeated string exception = 2;</code>
     */
    public java.lang.String getException(int index) {
      return exception_.get(index);
    }
    /**
     * <code>repeated string exception = 2;</code>
     */
    public com.google.protobuf.ByteString
        getExceptionBytes(int index) {
      return exception_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < licenseType_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, licenseType_.getRaw(i));
      }
      for (int i = 0; i < exception_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, exception_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < licenseType_.size(); i++) {
          dataSize += computeStringSizeNoTag(licenseType_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getLicenseTypeList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < exception_.size(); i++) {
          dataSize += computeStringSizeNoTag(exception_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExceptionList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.License)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.License other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.License) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getLicenseTypeCount() > 0) {
        hash = (37 * hash) + LICENSE_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getLicenseTypeList().hashCode();
      }
      if (getExceptionCount() > 0) {
        hash = (37 * hash) + EXCEPTION_FIELD_NUMBER;
        hash = (53 * hash) + getExceptionList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.License parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.License parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.License prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.License}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.License)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_License_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_License_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.License.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.License.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        licenseType_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        exception_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_License_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.License getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.License build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.License result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.License buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.License result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.License(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          licenseType_ = licenseType_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.licenseType_ = licenseType_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          exception_ = exception_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.exception_ = exception_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.License) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.License)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.License other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance()) return this;
        if (!other.licenseType_.isEmpty()) {
          if (licenseType_.isEmpty()) {
            licenseType_ = other.licenseType_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureLicenseTypeIsMutable();
            licenseType_.addAll(other.licenseType_);
          }
          onChanged();
        }
        if (!other.exception_.isEmpty()) {
          if (exception_.isEmpty()) {
            exception_ = other.exception_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureExceptionIsMutable();
            exception_.addAll(other.exception_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.License parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.License) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList licenseType_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureLicenseTypeIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          licenseType_ = new com.google.protobuf.LazyStringArrayList(licenseType_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getLicenseTypeList() {
        return licenseType_.getUnmodifiableView();
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public int getLicenseTypeCount() {
        return licenseType_.size();
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public java.lang.String getLicenseType(int index) {
        return licenseType_.get(index);
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public com.google.protobuf.ByteString
          getLicenseTypeBytes(int index) {
        return licenseType_.getByteString(index);
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public Builder setLicenseType(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLicenseTypeIsMutable();
        licenseType_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public Builder addLicenseType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLicenseTypeIsMutable();
        licenseType_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public Builder addAllLicenseType(
          java.lang.Iterable<java.lang.String> values) {
        ensureLicenseTypeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, licenseType_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public Builder clearLicenseType() {
        licenseType_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string license_type = 1;</code>
       */
      public Builder addLicenseTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLicenseTypeIsMutable();
        licenseType_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList exception_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureExceptionIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          exception_ = new com.google.protobuf.LazyStringArrayList(exception_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getExceptionList() {
        return exception_.getUnmodifiableView();
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public int getExceptionCount() {
        return exception_.size();
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public java.lang.String getException(int index) {
        return exception_.get(index);
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public com.google.protobuf.ByteString
          getExceptionBytes(int index) {
        return exception_.getByteString(index);
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public Builder setException(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExceptionIsMutable();
        exception_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public Builder addException(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExceptionIsMutable();
        exception_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public Builder addAllException(
          java.lang.Iterable<java.lang.String> values) {
        ensureExceptionIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, exception_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public Builder clearException() {
        exception_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string exception = 2;</code>
       */
      public Builder addExceptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExceptionIsMutable();
        exception_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.License)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.License)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.License DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.License();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.License getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.License getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StringDictEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.StringDictEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string key = 1;</code>
     */
    boolean hasKey();
    /**
     * <code>required string key = 1;</code>
     */
    java.lang.String getKey();
    /**
     * <code>required string key = 1;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <code>required string value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 2;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code blaze_query.StringDictEntry}
   */
  public  static final class StringDictEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.StringDictEntry)
      StringDictEntryOrBuilder {
    // Use StringDictEntry.newBuilder() to construct.
    private StringDictEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private StringDictEntry() {
      key_ = "";
      value_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StringDictEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              key_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              value_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * <code>required string key = 1;</code>
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string key = 1;</code>
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string key = 1;</code>
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private volatile java.lang.Object value_;
    /**
     * <code>required string value = 2;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string value = 2;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 2;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry) obj;

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

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

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.StringDictEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.StringDictEntry)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictEntry_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.getDefaultInstance()) return this;
        if (other.hasKey()) {
          bitField0_ |= 0x00000001;
          key_ = other.key_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <code>required string key = 1;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string key = 1;</code>
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 2;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string value = 2;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 2;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.StringDictEntry)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.StringDictEntry)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StringDictUnaryEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.StringDictUnaryEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string key = 1;</code>
     */
    boolean hasKey();
    /**
     * <code>required string key = 1;</code>
     */
    java.lang.String getKey();
    /**
     * <code>required string key = 1;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <code>required string value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 2;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code blaze_query.StringDictUnaryEntry}
   */
  public  static final class StringDictUnaryEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.StringDictUnaryEntry)
      StringDictUnaryEntryOrBuilder {
    // Use StringDictUnaryEntry.newBuilder() to construct.
    private StringDictUnaryEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private StringDictUnaryEntry() {
      key_ = "";
      value_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StringDictUnaryEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              key_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              value_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictUnaryEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictUnaryEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * <code>required string key = 1;</code>
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string key = 1;</code>
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string key = 1;</code>
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private volatile java.lang.Object value_;
    /**
     * <code>required string value = 2;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string value = 2;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 2;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry) obj;

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

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

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.StringDictUnaryEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.StringDictUnaryEntry)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictUnaryEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictUnaryEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringDictUnaryEntry_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.getDefaultInstance()) return this;
        if (other.hasKey()) {
          bitField0_ |= 0x00000001;
          key_ = other.key_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <code>required string key = 1;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string key = 1;</code>
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 2;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string value = 2;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 2;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.StringDictUnaryEntry)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.StringDictUnaryEntry)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LabelDictUnaryEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.LabelDictUnaryEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string key = 1;</code>
     */
    boolean hasKey();
    /**
     * <code>required string key = 1;</code>
     */
    java.lang.String getKey();
    /**
     * <code>required string key = 1;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <code>required string value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 2;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code blaze_query.LabelDictUnaryEntry}
   */
  public  static final class LabelDictUnaryEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.LabelDictUnaryEntry)
      LabelDictUnaryEntryOrBuilder {
    // Use LabelDictUnaryEntry.newBuilder() to construct.
    private LabelDictUnaryEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LabelDictUnaryEntry() {
      key_ = "";
      value_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LabelDictUnaryEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              key_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              value_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelDictUnaryEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelDictUnaryEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * <code>required string key = 1;</code>
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string key = 1;</code>
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string key = 1;</code>
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private volatile java.lang.Object value_;
    /**
     * <code>required string value = 2;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string value = 2;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 2;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry) obj;

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

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

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.LabelDictUnaryEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.LabelDictUnaryEntry)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelDictUnaryEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelDictUnaryEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelDictUnaryEntry_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.getDefaultInstance()) return this;
        if (other.hasKey()) {
          bitField0_ |= 0x00000001;
          key_ = other.key_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <code>required string key = 1;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string key = 1;</code>
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 2;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string value = 2;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 2;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 2;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.LabelDictUnaryEntry)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.LabelDictUnaryEntry)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LabelListDictEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.LabelListDictEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string key = 1;</code>
     */
    boolean hasKey();
    /**
     * <code>required string key = 1;</code>
     */
    java.lang.String getKey();
    /**
     * <code>required string key = 1;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <code>repeated string value = 2;</code>
     */
    java.util.List<java.lang.String>
        getValueList();
    /**
     * <code>repeated string value = 2;</code>
     */
    int getValueCount();
    /**
     * <code>repeated string value = 2;</code>
     */
    java.lang.String getValue(int index);
    /**
     * <code>repeated string value = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes(int index);
  }
  /**
   * Protobuf type {@code blaze_query.LabelListDictEntry}
   */
  public  static final class LabelListDictEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.LabelListDictEntry)
      LabelListDictEntryOrBuilder {
    // Use LabelListDictEntry.newBuilder() to construct.
    private LabelListDictEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LabelListDictEntry() {
      key_ = "";
      value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LabelListDictEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              key_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                value_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              value_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = value_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelListDictEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelListDictEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * <code>required string key = 1;</code>
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string key = 1;</code>
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string key = 1;</code>
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList value_;
    /**
     * <code>repeated string value = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getValueList() {
      return value_;
    }
    /**
     * <code>repeated string value = 2;</code>
     */
    public int getValueCount() {
      return value_.size();
    }
    /**
     * <code>repeated string value = 2;</code>
     */
    public java.lang.String getValue(int index) {
      return value_.get(index);
    }
    /**
     * <code>repeated string value = 2;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes(int index) {
      return value_.getByteString(index);
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      for (int i = 0; i < value_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < value_.size(); i++) {
          dataSize += computeStringSizeNoTag(value_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValueList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry) obj;

      boolean result = true;
      result = result && (hasKey() == other.hasKey());
      if (hasKey()) {
        result = result && getKey()
            .equals(other.getKey());
      }
      result = result && getValueList()
          .equals(other.getValueList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (getValueCount() > 0) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValueList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.LabelListDictEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.LabelListDictEntry)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelListDictEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelListDictEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_LabelListDictEntry_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = value_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.getDefaultInstance()) return this;
        if (other.hasKey()) {
          bitField0_ |= 0x00000001;
          key_ = other.key_;
          onChanged();
        }
        if (!other.value_.isEmpty()) {
          if (value_.isEmpty()) {
            value_ = other.value_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureValueIsMutable();
            value_.addAll(other.value_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <code>required string key = 1;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string key = 1;</code>
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureValueIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = new com.google.protobuf.LazyStringArrayList(value_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getValueList() {
        return value_.getUnmodifiableView();
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public int getValueCount() {
        return value_.size();
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public java.lang.String getValue(int index) {
        return value_.get(index);
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes(int index) {
        return value_.getByteString(index);
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder setValue(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder addValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder addAllValue(
          java.lang.Iterable<java.lang.String> values) {
        ensureValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, value_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder clearValue() {
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder addValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.LabelListDictEntry)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.LabelListDictEntry)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StringListDictEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.StringListDictEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string key = 1;</code>
     */
    boolean hasKey();
    /**
     * <code>required string key = 1;</code>
     */
    java.lang.String getKey();
    /**
     * <code>required string key = 1;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <code>repeated string value = 2;</code>
     */
    java.util.List<java.lang.String>
        getValueList();
    /**
     * <code>repeated string value = 2;</code>
     */
    int getValueCount();
    /**
     * <code>repeated string value = 2;</code>
     */
    java.lang.String getValue(int index);
    /**
     * <code>repeated string value = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes(int index);
  }
  /**
   * Protobuf type {@code blaze_query.StringListDictEntry}
   */
  public  static final class StringListDictEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.StringListDictEntry)
      StringListDictEntryOrBuilder {
    // Use StringListDictEntry.newBuilder() to construct.
    private StringListDictEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private StringListDictEntry() {
      key_ = "";
      value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StringListDictEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              key_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                value_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              value_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = value_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringListDictEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringListDictEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * <code>required string key = 1;</code>
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string key = 1;</code>
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string key = 1;</code>
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList value_;
    /**
     * <code>repeated string value = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getValueList() {
      return value_;
    }
    /**
     * <code>repeated string value = 2;</code>
     */
    public int getValueCount() {
      return value_.size();
    }
    /**
     * <code>repeated string value = 2;</code>
     */
    public java.lang.String getValue(int index) {
      return value_.get(index);
    }
    /**
     * <code>repeated string value = 2;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes(int index) {
      return value_.getByteString(index);
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      for (int i = 0; i < value_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < value_.size(); i++) {
          dataSize += computeStringSizeNoTag(value_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getValueList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry) obj;

      boolean result = true;
      result = result && (hasKey() == other.hasKey());
      if (hasKey()) {
        result = result && getKey()
            .equals(other.getKey());
      }
      result = result && getValueList()
          .equals(other.getValueList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (getValueCount() > 0) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValueList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.StringListDictEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.StringListDictEntry)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringListDictEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringListDictEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        key_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_StringListDictEntry_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.key_ = key_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = value_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.getDefaultInstance()) return this;
        if (other.hasKey()) {
          bitField0_ |= 0x00000001;
          key_ = other.key_;
          onChanged();
        }
        if (!other.value_.isEmpty()) {
          if (value_.isEmpty()) {
            value_ = other.value_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureValueIsMutable();
            value_.addAll(other.value_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object key_ = "";
      /**
       * <code>required string key = 1;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string key = 1;</code>
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <code>required string key = 1;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        key_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureValueIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          value_ = new com.google.protobuf.LazyStringArrayList(value_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getValueList() {
        return value_.getUnmodifiableView();
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public int getValueCount() {
        return value_.size();
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public java.lang.String getValue(int index) {
        return value_.get(index);
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes(int index) {
        return value_.getByteString(index);
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder setValue(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder addValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder addAllValue(
          java.lang.Iterable<java.lang.String> values) {
        ensureValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, value_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder clearValue() {
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string value = 2;</code>
       */
      public Builder addValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
        value_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.StringListDictEntry)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.StringListDictEntry)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FilesetEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.FilesetEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The label pointing to the source target where files are copied from.
     * </pre>
     *
     * <code>required string source = 1;</code>
     */
    boolean hasSource();
    /**
     * <pre>
     * The label pointing to the source target where files are copied from.
     * </pre>
     *
     * <code>required string source = 1;</code>
     */
    java.lang.String getSource();
    /**
     * <pre>
     * The label pointing to the source target where files are copied from.
     * </pre>
     *
     * <code>required string source = 1;</code>
     */
    com.google.protobuf.ByteString
        getSourceBytes();

    /**
     * <pre>
     * The relative path within the fileset rule where files will be mapped.
     * </pre>
     *
     * <code>required string destination_directory = 2;</code>
     */
    boolean hasDestinationDirectory();
    /**
     * <pre>
     * The relative path within the fileset rule where files will be mapped.
     * </pre>
     *
     * <code>required string destination_directory = 2;</code>
     */
    java.lang.String getDestinationDirectory();
    /**
     * <pre>
     * The relative path within the fileset rule where files will be mapped.
     * </pre>
     *
     * <code>required string destination_directory = 2;</code>
     */
    com.google.protobuf.ByteString
        getDestinationDirectoryBytes();

    /**
     * <pre>
     * Whether the files= attribute was specified. This is necessary because
     * no files= attribute and files=[] mean different things.
     * </pre>
     *
     * <code>optional bool files_present = 7;</code>
     */
    boolean hasFilesPresent();
    /**
     * <pre>
     * Whether the files= attribute was specified. This is necessary because
     * no files= attribute and files=[] mean different things.
     * </pre>
     *
     * <code>optional bool files_present = 7;</code>
     */
    boolean getFilesPresent();

    /**
     * <pre>
     * A list of file labels to include from the source directory.
     * </pre>
     *
     * <code>repeated string file = 3;</code>
     */
    java.util.List<java.lang.String>
        getFileList();
    /**
     * <pre>
     * A list of file labels to include from the source directory.
     * </pre>
     *
     * <code>repeated string file = 3;</code>
     */
    int getFileCount();
    /**
     * <pre>
     * A list of file labels to include from the source directory.
     * </pre>
     *
     * <code>repeated string file = 3;</code>
     */
    java.lang.String getFile(int index);
    /**
     * <pre>
     * A list of file labels to include from the source directory.
     * </pre>
     *
     * <code>repeated string file = 3;</code>
     */
    com.google.protobuf.ByteString
        getFileBytes(int index);

    /**
     * <pre>
     * If this is a fileset entry representing files within the rule
     * package, this lists relative paths to files that should be excluded from
     * the set.  This cannot contain values if 'file' also has values.
     * </pre>
     *
     * <code>repeated string exclude = 4;</code>
     */
    java.util.List<java.lang.String>
        getExcludeList();
    /**
     * <pre>
     * If this is a fileset entry representing files within the rule
     * package, this lists relative paths to files that should be excluded from
     * the set.  This cannot contain values if 'file' also has values.
     * </pre>
     *
     * <code>repeated string exclude = 4;</code>
     */
    int getExcludeCount();
    /**
     * <pre>
     * If this is a fileset entry representing files within the rule
     * package, this lists relative paths to files that should be excluded from
     * the set.  This cannot contain values if 'file' also has values.
     * </pre>
     *
     * <code>repeated string exclude = 4;</code>
     */
    java.lang.String getExclude(int index);
    /**
     * <pre>
     * If this is a fileset entry representing files within the rule
     * package, this lists relative paths to files that should be excluded from
     * the set.  This cannot contain values if 'file' also has values.
     * </pre>
     *
     * <code>repeated string exclude = 4;</code>
     */
    com.google.protobuf.ByteString
        getExcludeBytes(int index);

    /**
     * <pre>
     * This field is optional because there will be some time when the new
     * PB is used by tools depending on blaze query, but the new blaze version
     * is not yet released.
     * TODO(bazel-team): Make this field required once a version of Blaze is
     * released that outputs this field.
     * </pre>
     *
     * <code>optional .blaze_query.FilesetEntry.SymlinkBehavior symlink_behavior = 5 [default = COPY];</code>
     */
    boolean hasSymlinkBehavior();
    /**
     * <pre>
     * This field is optional because there will be some time when the new
     * PB is used by tools depending on blaze query, but the new blaze version
     * is not yet released.
     * TODO(bazel-team): Make this field required once a version of Blaze is
     * released that outputs this field.
     * </pre>
     *
     * <code>optional .blaze_query.FilesetEntry.SymlinkBehavior symlink_behavior = 5 [default = COPY];</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior getSymlinkBehavior();

    /**
     * <pre>
     * The prefix to strip from the path of the files in this FilesetEntry. Note
     * that no value and the empty string as the value mean different things here.
     * </pre>
     *
     * <code>optional string strip_prefix = 6;</code>
     */
    boolean hasStripPrefix();
    /**
     * <pre>
     * The prefix to strip from the path of the files in this FilesetEntry. Note
     * that no value and the empty string as the value mean different things here.
     * </pre>
     *
     * <code>optional string strip_prefix = 6;</code>
     */
    java.lang.String getStripPrefix();
    /**
     * <pre>
     * The prefix to strip from the path of the files in this FilesetEntry. Note
     * that no value and the empty string as the value mean different things here.
     * </pre>
     *
     * <code>optional string strip_prefix = 6;</code>
     */
    com.google.protobuf.ByteString
        getStripPrefixBytes();
  }
  /**
   * <pre>
   * Represents an entry attribute of a Fileset rule in a build file.
   * </pre>
   *
   * Protobuf type {@code blaze_query.FilesetEntry}
   */
  public  static final class FilesetEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.FilesetEntry)
      FilesetEntryOrBuilder {
    // Use FilesetEntry.newBuilder() to construct.
    private FilesetEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FilesetEntry() {
      source_ = "";
      destinationDirectory_ = "";
      filesPresent_ = false;
      file_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      exclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      symlinkBehavior_ = 1;
      stripPrefix_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FilesetEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              source_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              destinationDirectory_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                file_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              file_.add(bs);
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                exclude_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              exclude_.add(bs);
              break;
            }
            case 40: {
              int rawValue = input.readEnum();
              com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior value = com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(5, rawValue);
              } else {
                bitField0_ |= 0x00000008;
                symlinkBehavior_ = rawValue;
              }
              break;
            }
            case 50: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000010;
              stripPrefix_ = bs;
              break;
            }
            case 56: {
              bitField0_ |= 0x00000004;
              filesPresent_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          file_ = file_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          exclude_ = exclude_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_FilesetEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_FilesetEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder.class);
    }

    /**
     * <pre>
     * Indicates what to do when a source file is actually a symlink.
     * </pre>
     *
     * Protobuf enum {@code blaze_query.FilesetEntry.SymlinkBehavior}
     */
    public enum SymlinkBehavior
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>COPY = 1;</code>
       */
      COPY(1),
      /**
       * <code>DEREFERENCE = 2;</code>
       */
      DEREFERENCE(2),
      ;

      /**
       * <code>COPY = 1;</code>
       */
      public static final int COPY_VALUE = 1;
      /**
       * <code>DEREFERENCE = 2;</code>
       */
      public static final int DEREFERENCE_VALUE = 2;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static SymlinkBehavior valueOf(int value) {
        return forNumber(value);
      }

      public static SymlinkBehavior forNumber(int value) {
        switch (value) {
          case 1: return COPY;
          case 2: return DEREFERENCE;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

      private SymlinkBehavior(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:blaze_query.FilesetEntry.SymlinkBehavior)
    }

    private int bitField0_;
    public static final int SOURCE_FIELD_NUMBER = 1;
    private volatile java.lang.Object source_;
    /**
     * <pre>
     * The label pointing to the source target where files are copied from.
     * </pre>
     *
     * <code>required string source = 1;</code>
     */
    public boolean hasSource() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The label pointing to the source target where files are copied from.
     * </pre>
     *
     * <code>required string source = 1;</code>
     */
    public java.lang.String getSource() {
      java.lang.Object ref = source_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          source_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The label pointing to the source target where files are copied from.
     * </pre>
     *
     * <code>required string source = 1;</code>
     */
    public com.google.protobuf.ByteString
        getSourceBytes() {
      java.lang.Object ref = source_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        source_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESTINATION_DIRECTORY_FIELD_NUMBER = 2;
    private volatile java.lang.Object destinationDirectory_;
    /**
     * <pre>
     * The relative path within the fileset rule where files will be mapped.
     * </pre>
     *
     * <code>required string destination_directory = 2;</code>
     */
    public boolean hasDestinationDirectory() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * The relative path within the fileset rule where files will be mapped.
     * </pre>
     *
     * <code>required string destination_directory = 2;</code>
     */
    public java.lang.String getDestinationDirectory() {
      java.lang.Object ref = destinationDirectory_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          destinationDirectory_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The relative path within the fileset rule where files will be mapped.
     * </pre>
     *
     * <code>required string destination_directory = 2;</code>
     */
    public com.google.protobuf.ByteString
        getDestinationDirectoryBytes() {
      java.lang.Object ref = destinationDirectory_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        destinationDirectory_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FILES_PRESENT_FIELD_NUMBER = 7;
    private boolean filesPresent_;
    /**
     * <pre>
     * Whether the files= attribute was specified. This is necessary because
     * no files= attribute and files=[] mean different things.
     * </pre>
     *
     * <code>optional bool files_present = 7;</code>
     */
    public boolean hasFilesPresent() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * Whether the files= attribute was specified. This is necessary because
     * no files= attribute and files=[] mean different things.
     * </pre>
     *
     * <code>optional bool files_present = 7;</code>
     */
    public boolean getFilesPresent() {
      return filesPresent_;
    }

    public static final int FILE_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList file_;
    /**
     * <pre>
     * A list of file labels to include from the source directory.
     * </pre>
     *
     * <code>repeated string file = 3;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getFileList() {
      return file_;
    }
    /**
     * <pre>
     * A list of file labels to include from the source directory.
     * </pre>
     *
     * <code>repeated string file = 3;</code>
     */
    public int getFileCount() {
      return file_.size();
    }
    /**
     * <pre>
     * A list of file labels to include from the source directory.
     * </pre>
     *
     * <code>repeated string file = 3;</code>
     */
    public java.lang.String getFile(int index) {
      return file_.get(index);
    }
    /**
     * <pre>
     * A list of file labels to include from the source directory.
     * </pre>
     *
     * <code>repeated string file = 3;</code>
     */
    public com.google.protobuf.ByteString
        getFileBytes(int index) {
      return file_.getByteString(index);
    }

    public static final int EXCLUDE_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList exclude_;
    /**
     * <pre>
     * If this is a fileset entry representing files within the rule
     * package, this lists relative paths to files that should be excluded from
     * the set.  This cannot contain values if 'file' also has values.
     * </pre>
     *
     * <code>repeated string exclude = 4;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getExcludeList() {
      return exclude_;
    }
    /**
     * <pre>
     * If this is a fileset entry representing files within the rule
     * package, this lists relative paths to files that should be excluded from
     * the set.  This cannot contain values if 'file' also has values.
     * </pre>
     *
     * <code>repeated string exclude = 4;</code>
     */
    public int getExcludeCount() {
      return exclude_.size();
    }
    /**
     * <pre>
     * If this is a fileset entry representing files within the rule
     * package, this lists relative paths to files that should be excluded from
     * the set.  This cannot contain values if 'file' also has values.
     * </pre>
     *
     * <code>repeated string exclude = 4;</code>
     */
    public java.lang.String getExclude(int index) {
      return exclude_.get(index);
    }
    /**
     * <pre>
     * If this is a fileset entry representing files within the rule
     * package, this lists relative paths to files that should be excluded from
     * the set.  This cannot contain values if 'file' also has values.
     * </pre>
     *
     * <code>repeated string exclude = 4;</code>
     */
    public com.google.protobuf.ByteString
        getExcludeBytes(int index) {
      return exclude_.getByteString(index);
    }

    public static final int SYMLINK_BEHAVIOR_FIELD_NUMBER = 5;
    private int symlinkBehavior_;
    /**
     * <pre>
     * This field is optional because there will be some time when the new
     * PB is used by tools depending on blaze query, but the new blaze version
     * is not yet released.
     * TODO(bazel-team): Make this field required once a version of Blaze is
     * released that outputs this field.
     * </pre>
     *
     * <code>optional .blaze_query.FilesetEntry.SymlinkBehavior symlink_behavior = 5 [default = COPY];</code>
     */
    public boolean hasSymlinkBehavior() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * This field is optional because there will be some time when the new
     * PB is used by tools depending on blaze query, but the new blaze version
     * is not yet released.
     * TODO(bazel-team): Make this field required once a version of Blaze is
     * released that outputs this field.
     * </pre>
     *
     * <code>optional .blaze_query.FilesetEntry.SymlinkBehavior symlink_behavior = 5 [default = COPY];</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior getSymlinkBehavior() {
      com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior result = com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior.valueOf(symlinkBehavior_);
      return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior.COPY : result;
    }

    public static final int STRIP_PREFIX_FIELD_NUMBER = 6;
    private volatile java.lang.Object stripPrefix_;
    /**
     * <pre>
     * The prefix to strip from the path of the files in this FilesetEntry. Note
     * that no value and the empty string as the value mean different things here.
     * </pre>
     *
     * <code>optional string strip_prefix = 6;</code>
     */
    public boolean hasStripPrefix() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <pre>
     * The prefix to strip from the path of the files in this FilesetEntry. Note
     * that no value and the empty string as the value mean different things here.
     * </pre>
     *
     * <code>optional string strip_prefix = 6;</code>
     */
    public java.lang.String getStripPrefix() {
      java.lang.Object ref = stripPrefix_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          stripPrefix_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The prefix to strip from the path of the files in this FilesetEntry. Note
     * that no value and the empty string as the value mean different things here.
     * </pre>
     *
     * <code>optional string strip_prefix = 6;</code>
     */
    public com.google.protobuf.ByteString
        getStripPrefixBytes() {
      java.lang.Object ref = stripPrefix_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stripPrefix_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, source_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, destinationDirectory_);
      }
      for (int i = 0; i < file_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, file_.getRaw(i));
      }
      for (int i = 0; i < exclude_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, exclude_.getRaw(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeEnum(5, symlinkBehavior_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, stripPrefix_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(7, filesPresent_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, source_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, destinationDirectory_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < file_.size(); i++) {
          dataSize += computeStringSizeNoTag(file_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getFileList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < exclude_.size(); i++) {
          dataSize += computeStringSizeNoTag(exclude_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExcludeList().size();
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, symlinkBehavior_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, stripPrefix_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, filesPresent_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry) obj;

      boolean result = true;
      result = result && (hasSource() == other.hasSource());
      if (hasSource()) {
        result = result && getSource()
            .equals(other.getSource());
      }
      result = result && (hasDestinationDirectory() == other.hasDestinationDirectory());
      if (hasDestinationDirectory()) {
        result = result && getDestinationDirectory()
            .equals(other.getDestinationDirectory());
      }
      result = result && (hasFilesPresent() == other.hasFilesPresent());
      if (hasFilesPresent()) {
        result = result && (getFilesPresent()
            == other.getFilesPresent());
      }
      result = result && getFileList()
          .equals(other.getFileList());
      result = result && getExcludeList()
          .equals(other.getExcludeList());
      result = result && (hasSymlinkBehavior() == other.hasSymlinkBehavior());
      if (hasSymlinkBehavior()) {
        result = result && symlinkBehavior_ == other.symlinkBehavior_;
      }
      result = result && (hasStripPrefix() == other.hasStripPrefix());
      if (hasStripPrefix()) {
        result = result && getStripPrefix()
            .equals(other.getStripPrefix());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasSource()) {
        hash = (37 * hash) + SOURCE_FIELD_NUMBER;
        hash = (53 * hash) + getSource().hashCode();
      }
      if (hasDestinationDirectory()) {
        hash = (37 * hash) + DESTINATION_DIRECTORY_FIELD_NUMBER;
        hash = (53 * hash) + getDestinationDirectory().hashCode();
      }
      if (hasFilesPresent()) {
        hash = (37 * hash) + FILES_PRESENT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getFilesPresent());
      }
      if (getFileCount() > 0) {
        hash = (37 * hash) + FILE_FIELD_NUMBER;
        hash = (53 * hash) + getFileList().hashCode();
      }
      if (getExcludeCount() > 0) {
        hash = (37 * hash) + EXCLUDE_FIELD_NUMBER;
        hash = (53 * hash) + getExcludeList().hashCode();
      }
      if (hasSymlinkBehavior()) {
        hash = (37 * hash) + SYMLINK_BEHAVIOR_FIELD_NUMBER;
        hash = (53 * hash) + symlinkBehavior_;
      }
      if (hasStripPrefix()) {
        hash = (37 * hash) + STRIP_PREFIX_FIELD_NUMBER;
        hash = (53 * hash) + getStripPrefix().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Represents an entry attribute of a Fileset rule in a build file.
     * </pre>
     *
     * Protobuf type {@code blaze_query.FilesetEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.FilesetEntry)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_FilesetEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_FilesetEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        source_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        destinationDirectory_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        filesPresent_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        file_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        exclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        symlinkBehavior_ = 1;
        bitField0_ = (bitField0_ & ~0x00000020);
        stripPrefix_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_FilesetEntry_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.source_ = source_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.destinationDirectory_ = destinationDirectory_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.filesPresent_ = filesPresent_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          file_ = file_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.file_ = file_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          exclude_ = exclude_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.exclude_ = exclude_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000008;
        }
        result.symlinkBehavior_ = symlinkBehavior_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000010;
        }
        result.stripPrefix_ = stripPrefix_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.getDefaultInstance()) return this;
        if (other.hasSource()) {
          bitField0_ |= 0x00000001;
          source_ = other.source_;
          onChanged();
        }
        if (other.hasDestinationDirectory()) {
          bitField0_ |= 0x00000002;
          destinationDirectory_ = other.destinationDirectory_;
          onChanged();
        }
        if (other.hasFilesPresent()) {
          setFilesPresent(other.getFilesPresent());
        }
        if (!other.file_.isEmpty()) {
          if (file_.isEmpty()) {
            file_ = other.file_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureFileIsMutable();
            file_.addAll(other.file_);
          }
          onChanged();
        }
        if (!other.exclude_.isEmpty()) {
          if (exclude_.isEmpty()) {
            exclude_ = other.exclude_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureExcludeIsMutable();
            exclude_.addAll(other.exclude_);
          }
          onChanged();
        }
        if (other.hasSymlinkBehavior()) {
          setSymlinkBehavior(other.getSymlinkBehavior());
        }
        if (other.hasStripPrefix()) {
          bitField0_ |= 0x00000040;
          stripPrefix_ = other.stripPrefix_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object source_ = "";
      /**
       * <pre>
       * The label pointing to the source target where files are copied from.
       * </pre>
       *
       * <code>required string source = 1;</code>
       */
      public boolean hasSource() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The label pointing to the source target where files are copied from.
       * </pre>
       *
       * <code>required string source = 1;</code>
       */
      public java.lang.String getSource() {
        java.lang.Object ref = source_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            source_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The label pointing to the source target where files are copied from.
       * </pre>
       *
       * <code>required string source = 1;</code>
       */
      public com.google.protobuf.ByteString
          getSourceBytes() {
        java.lang.Object ref = source_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          source_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The label pointing to the source target where files are copied from.
       * </pre>
       *
       * <code>required string source = 1;</code>
       */
      public Builder setSource(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        source_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The label pointing to the source target where files are copied from.
       * </pre>
       *
       * <code>required string source = 1;</code>
       */
      public Builder clearSource() {
        bitField0_ = (bitField0_ & ~0x00000001);
        source_ = getDefaultInstance().getSource();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The label pointing to the source target where files are copied from.
       * </pre>
       *
       * <code>required string source = 1;</code>
       */
      public Builder setSourceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        source_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object destinationDirectory_ = "";
      /**
       * <pre>
       * The relative path within the fileset rule where files will be mapped.
       * </pre>
       *
       * <code>required string destination_directory = 2;</code>
       */
      public boolean hasDestinationDirectory() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * The relative path within the fileset rule where files will be mapped.
       * </pre>
       *
       * <code>required string destination_directory = 2;</code>
       */
      public java.lang.String getDestinationDirectory() {
        java.lang.Object ref = destinationDirectory_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            destinationDirectory_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The relative path within the fileset rule where files will be mapped.
       * </pre>
       *
       * <code>required string destination_directory = 2;</code>
       */
      public com.google.protobuf.ByteString
          getDestinationDirectoryBytes() {
        java.lang.Object ref = destinationDirectory_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          destinationDirectory_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The relative path within the fileset rule where files will be mapped.
       * </pre>
       *
       * <code>required string destination_directory = 2;</code>
       */
      public Builder setDestinationDirectory(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        destinationDirectory_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The relative path within the fileset rule where files will be mapped.
       * </pre>
       *
       * <code>required string destination_directory = 2;</code>
       */
      public Builder clearDestinationDirectory() {
        bitField0_ = (bitField0_ & ~0x00000002);
        destinationDirectory_ = getDefaultInstance().getDestinationDirectory();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The relative path within the fileset rule where files will be mapped.
       * </pre>
       *
       * <code>required string destination_directory = 2;</code>
       */
      public Builder setDestinationDirectoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        destinationDirectory_ = value;
        onChanged();
        return this;
      }

      private boolean filesPresent_ ;
      /**
       * <pre>
       * Whether the files= attribute was specified. This is necessary because
       * no files= attribute and files=[] mean different things.
       * </pre>
       *
       * <code>optional bool files_present = 7;</code>
       */
      public boolean hasFilesPresent() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * Whether the files= attribute was specified. This is necessary because
       * no files= attribute and files=[] mean different things.
       * </pre>
       *
       * <code>optional bool files_present = 7;</code>
       */
      public boolean getFilesPresent() {
        return filesPresent_;
      }
      /**
       * <pre>
       * Whether the files= attribute was specified. This is necessary because
       * no files= attribute and files=[] mean different things.
       * </pre>
       *
       * <code>optional bool files_present = 7;</code>
       */
      public Builder setFilesPresent(boolean value) {
        bitField0_ |= 0x00000004;
        filesPresent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the files= attribute was specified. This is necessary because
       * no files= attribute and files=[] mean different things.
       * </pre>
       *
       * <code>optional bool files_present = 7;</code>
       */
      public Builder clearFilesPresent() {
        bitField0_ = (bitField0_ & ~0x00000004);
        filesPresent_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList file_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFileIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          file_ = new com.google.protobuf.LazyStringArrayList(file_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getFileList() {
        return file_.getUnmodifiableView();
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public int getFileCount() {
        return file_.size();
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public java.lang.String getFile(int index) {
        return file_.get(index);
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public com.google.protobuf.ByteString
          getFileBytes(int index) {
        return file_.getByteString(index);
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public Builder setFile(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFileIsMutable();
        file_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public Builder addFile(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFileIsMutable();
        file_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public Builder addAllFile(
          java.lang.Iterable<java.lang.String> values) {
        ensureFileIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, file_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public Builder clearFile() {
        file_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of file labels to include from the source directory.
       * </pre>
       *
       * <code>repeated string file = 3;</code>
       */
      public Builder addFileBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFileIsMutable();
        file_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList exclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureExcludeIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          exclude_ = new com.google.protobuf.LazyStringArrayList(exclude_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getExcludeList() {
        return exclude_.getUnmodifiableView();
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public int getExcludeCount() {
        return exclude_.size();
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public java.lang.String getExclude(int index) {
        return exclude_.get(index);
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public com.google.protobuf.ByteString
          getExcludeBytes(int index) {
        return exclude_.getByteString(index);
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public Builder setExclude(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExcludeIsMutable();
        exclude_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public Builder addExclude(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExcludeIsMutable();
        exclude_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public Builder addAllExclude(
          java.lang.Iterable<java.lang.String> values) {
        ensureExcludeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, exclude_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public Builder clearExclude() {
        exclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If this is a fileset entry representing files within the rule
       * package, this lists relative paths to files that should be excluded from
       * the set.  This cannot contain values if 'file' also has values.
       * </pre>
       *
       * <code>repeated string exclude = 4;</code>
       */
      public Builder addExcludeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExcludeIsMutable();
        exclude_.add(value);
        onChanged();
        return this;
      }

      private int symlinkBehavior_ = 1;
      /**
       * <pre>
       * This field is optional because there will be some time when the new
       * PB is used by tools depending on blaze query, but the new blaze version
       * is not yet released.
       * TODO(bazel-team): Make this field required once a version of Blaze is
       * released that outputs this field.
       * </pre>
       *
       * <code>optional .blaze_query.FilesetEntry.SymlinkBehavior symlink_behavior = 5 [default = COPY];</code>
       */
      public boolean hasSymlinkBehavior() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <pre>
       * This field is optional because there will be some time when the new
       * PB is used by tools depending on blaze query, but the new blaze version
       * is not yet released.
       * TODO(bazel-team): Make this field required once a version of Blaze is
       * released that outputs this field.
       * </pre>
       *
       * <code>optional .blaze_query.FilesetEntry.SymlinkBehavior symlink_behavior = 5 [default = COPY];</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior getSymlinkBehavior() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior result = com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior.valueOf(symlinkBehavior_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior.COPY : result;
      }
      /**
       * <pre>
       * This field is optional because there will be some time when the new
       * PB is used by tools depending on blaze query, but the new blaze version
       * is not yet released.
       * TODO(bazel-team): Make this field required once a version of Blaze is
       * released that outputs this field.
       * </pre>
       *
       * <code>optional .blaze_query.FilesetEntry.SymlinkBehavior symlink_behavior = 5 [default = COPY];</code>
       */
      public Builder setSymlinkBehavior(com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.SymlinkBehavior value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        symlinkBehavior_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This field is optional because there will be some time when the new
       * PB is used by tools depending on blaze query, but the new blaze version
       * is not yet released.
       * TODO(bazel-team): Make this field required once a version of Blaze is
       * released that outputs this field.
       * </pre>
       *
       * <code>optional .blaze_query.FilesetEntry.SymlinkBehavior symlink_behavior = 5 [default = COPY];</code>
       */
      public Builder clearSymlinkBehavior() {
        bitField0_ = (bitField0_ & ~0x00000020);
        symlinkBehavior_ = 1;
        onChanged();
        return this;
      }

      private java.lang.Object stripPrefix_ = "";
      /**
       * <pre>
       * The prefix to strip from the path of the files in this FilesetEntry. Note
       * that no value and the empty string as the value mean different things here.
       * </pre>
       *
       * <code>optional string strip_prefix = 6;</code>
       */
      public boolean hasStripPrefix() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <pre>
       * The prefix to strip from the path of the files in this FilesetEntry. Note
       * that no value and the empty string as the value mean different things here.
       * </pre>
       *
       * <code>optional string strip_prefix = 6;</code>
       */
      public java.lang.String getStripPrefix() {
        java.lang.Object ref = stripPrefix_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            stripPrefix_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The prefix to strip from the path of the files in this FilesetEntry. Note
       * that no value and the empty string as the value mean different things here.
       * </pre>
       *
       * <code>optional string strip_prefix = 6;</code>
       */
      public com.google.protobuf.ByteString
          getStripPrefixBytes() {
        java.lang.Object ref = stripPrefix_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stripPrefix_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The prefix to strip from the path of the files in this FilesetEntry. Note
       * that no value and the empty string as the value mean different things here.
       * </pre>
       *
       * <code>optional string strip_prefix = 6;</code>
       */
      public Builder setStripPrefix(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        stripPrefix_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The prefix to strip from the path of the files in this FilesetEntry. Note
       * that no value and the empty string as the value mean different things here.
       * </pre>
       *
       * <code>optional string strip_prefix = 6;</code>
       */
      public Builder clearStripPrefix() {
        bitField0_ = (bitField0_ & ~0x00000040);
        stripPrefix_ = getDefaultInstance().getStripPrefix();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The prefix to strip from the path of the files in this FilesetEntry. Note
       * that no value and the empty string as the value mean different things here.
       * </pre>
       *
       * <code>optional string strip_prefix = 6;</code>
       */
      public Builder setStripPrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        stripPrefix_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.FilesetEntry)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.FilesetEntry)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AttributeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.Attribute)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of the attribute
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * The name of the attribute
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of the attribute
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
     */
    boolean hasDEPRECATEDParseableLocation();
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation();
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder();

    /**
     * <pre>
     * Whether the attribute was explicitly specified
     * </pre>
     *
     * <code>optional bool explicitly_specified = 13;</code>
     */
    boolean hasExplicitlySpecified();
    /**
     * <pre>
     * Whether the attribute was explicitly specified
     * </pre>
     *
     * <code>optional bool explicitly_specified = 13;</code>
     */
    boolean getExplicitlySpecified();

    /**
     * <pre>
     * If this attribute has a string value or a string list value, then this
     * may be set to indicate that the value may be treated as a label that
     * isn't a dependency of this attribute's rule.
     * </pre>
     *
     * <code>optional bool nodep = 20;</code>
     */
    boolean hasNodep();
    /**
     * <pre>
     * If this attribute has a string value or a string list value, then this
     * may be set to indicate that the value may be treated as a label that
     * isn't a dependency of this attribute's rule.
     * </pre>
     *
     * <code>optional bool nodep = 20;</code>
     */
    boolean getNodep();

    /**
     * <pre>
     * The type of attribute.  This message is used for all of the different
     * attribute types so the discriminator helps for figuring out what is
     * stored in the message.
     * </pre>
     *
     * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
     */
    boolean hasType();
    /**
     * <pre>
     * The type of attribute.  This message is used for all of the different
     * attribute types so the discriminator helps for figuring out what is
     * stored in the message.
     * </pre>
     *
     * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType();

    /**
     * <pre>
     * If this attribute has an integer value this will be populated.
     * Boolean and TriState also use this field as [0,1] and [-1,0,1]
     * for [false, true] and [auto, no, yes] respectively.
     * </pre>
     *
     * <code>optional int32 int_value = 3;</code>
     */
    boolean hasIntValue();
    /**
     * <pre>
     * If this attribute has an integer value this will be populated.
     * Boolean and TriState also use this field as [0,1] and [-1,0,1]
     * for [false, true] and [auto, no, yes] respectively.
     * </pre>
     *
     * <code>optional int32 int_value = 3;</code>
     */
    int getIntValue();

    /**
     * <pre>
     * If the attribute has a string value this will be populated.  Label and
     * path attributes use this field as the value even though the type may
     * be LABEL or something else other than STRING.
     * </pre>
     *
     * <code>optional string string_value = 5;</code>
     */
    boolean hasStringValue();
    /**
     * <pre>
     * If the attribute has a string value this will be populated.  Label and
     * path attributes use this field as the value even though the type may
     * be LABEL or something else other than STRING.
     * </pre>
     *
     * <code>optional string string_value = 5;</code>
     */
    java.lang.String getStringValue();
    /**
     * <pre>
     * If the attribute has a string value this will be populated.  Label and
     * path attributes use this field as the value even though the type may
     * be LABEL or something else other than STRING.
     * </pre>
     *
     * <code>optional string string_value = 5;</code>
     */
    com.google.protobuf.ByteString
        getStringValueBytes();

    /**
     * <pre>
     * If the attribute has a boolean value this will be populated.
     * </pre>
     *
     * <code>optional bool boolean_value = 14;</code>
     */
    boolean hasBooleanValue();
    /**
     * <pre>
     * If the attribute has a boolean value this will be populated.
     * </pre>
     *
     * <code>optional bool boolean_value = 14;</code>
     */
    boolean getBooleanValue();

    /**
     * <pre>
     * If the attribute is a Tristate value, this will be populated.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.Tristate tristate_value = 15;</code>
     */
    boolean hasTristateValue();
    /**
     * <pre>
     * If the attribute is a Tristate value, this will be populated.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.Tristate tristate_value = 15;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate getTristateValue();

    /**
     * <pre>
     * The value of the attribute has a list of string values (label and path
     * note from STRING applies here as well).
     * </pre>
     *
     * <code>repeated string string_list_value = 6;</code>
     */
    java.util.List<java.lang.String>
        getStringListValueList();
    /**
     * <pre>
     * The value of the attribute has a list of string values (label and path
     * note from STRING applies here as well).
     * </pre>
     *
     * <code>repeated string string_list_value = 6;</code>
     */
    int getStringListValueCount();
    /**
     * <pre>
     * The value of the attribute has a list of string values (label and path
     * note from STRING applies here as well).
     * </pre>
     *
     * <code>repeated string string_list_value = 6;</code>
     */
    java.lang.String getStringListValue(int index);
    /**
     * <pre>
     * The value of the attribute has a list of string values (label and path
     * note from STRING applies here as well).
     * </pre>
     *
     * <code>repeated string string_list_value = 6;</code>
     */
    com.google.protobuf.ByteString
        getStringListValueBytes(int index);

    /**
     * <pre>
     * If this is a license attribute, the license information is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 7;</code>
     */
    boolean hasLicense();
    /**
     * <pre>
     * If this is a license attribute, the license information is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 7;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense();
    /**
     * <pre>
     * If this is a license attribute, the license information is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 7;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder();

    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> 
        getStringDictValueList();
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getStringDictValue(int index);
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    int getStringDictValueCount();
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> 
        getStringDictValueOrBuilderList();
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder getStringDictValueOrBuilder(
        int index);

    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> 
        getFilesetListValueList();
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getFilesetListValue(int index);
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    int getFilesetListValueCount();
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> 
        getFilesetListValueOrBuilderList();
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder getFilesetListValueOrBuilder(
        int index);

    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> 
        getLabelListDictValueList();
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getLabelListDictValue(int index);
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    int getLabelListDictValueCount();
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> 
        getLabelListDictValueOrBuilderList();
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder getLabelListDictValueOrBuilder(
        int index);

    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> 
        getStringListDictValueList();
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getStringListDictValue(int index);
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    int getStringListDictValueCount();
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> 
        getStringListDictValueOrBuilderList();
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder getStringListDictValueOrBuilder(
        int index);

    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> 
        getGlobCriteriaList();
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getGlobCriteria(int index);
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    int getGlobCriteriaCount();
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> 
        getGlobCriteriaOrBuilderList();
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder getGlobCriteriaOrBuilder(
        int index);

    /**
     * <pre>
     * The value of the attribute has a list of int32 values
     * </pre>
     *
     * <code>repeated int32 int_list_value = 17;</code>
     */
    java.util.List<java.lang.Integer> getIntListValueList();
    /**
     * <pre>
     * The value of the attribute has a list of int32 values
     * </pre>
     *
     * <code>repeated int32 int_list_value = 17;</code>
     */
    int getIntListValueCount();
    /**
     * <pre>
     * The value of the attribute has a list of int32 values
     * </pre>
     *
     * <code>repeated int32 int_list_value = 17;</code>
     */
    int getIntListValue(int index);

    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> 
        getStringDictUnaryValueList();
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getStringDictUnaryValue(int index);
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    int getStringDictUnaryValueCount();
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> 
        getStringDictUnaryValueOrBuilderList();
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder getStringDictUnaryValueOrBuilder(
        int index);

    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> 
        getLabelDictUnaryValueList();
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getLabelDictUnaryValue(int index);
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    int getLabelDictUnaryValueCount();
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> 
        getLabelDictUnaryValueOrBuilderList();
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder getLabelDictUnaryValueOrBuilder(
        int index);

    /**
     * <pre>
     * If this attribute's value is an expression containing one or more select
     * expressions, then its type is SELECTOR_LIST and a SelectorList will be
     * stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
     */
    boolean hasSelectorList();
    /**
     * <pre>
     * If this attribute's value is an expression containing one or more select
     * expressions, then its type is SELECTOR_LIST and a SelectorList will be
     * stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList getSelectorList();
    /**
     * <pre>
     * If this attribute's value is an expression containing one or more select
     * expressions, then its type is SELECTOR_LIST and a SelectorList will be
     * stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorListOrBuilder getSelectorListOrBuilder();
  }
  /**
   * <pre>
   * A rule attribute. Each attribute must have a type and one of the various
   * value fields populated - for the most part.
   * Attributes of BOOLEAN and TRISTATE type may set all of the int, bool, and
   * string values for backwards compatibility with clients that expect them to
   * be set.
   * Attributes of INTEGER, STRING, LABEL, LICENSE, BOOLEAN, and TRISTATE type
   * may set *none* of the values. This can happen if the Attribute message is
   * prepared for a client that doesn't support SELECTOR_LIST, but the rule has
   * a selector list value for the attribute. (Selector lists for attributes of
   * other types--the collection types--are handled differently when prepared
   * for such a client. The possible collection values are gathered together
   * and flattened.)
   * By checking the type, the appropriate value can be extracted - see the
   * comments on each type for the associated value.  The order of lists comes
   * from the blaze parsing. If an attribute is of a list type, the associated
   * list should never be empty.
   * </pre>
   *
   * Protobuf type {@code blaze_query.Attribute}
   */
  public  static final class Attribute extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.Attribute)
      AttributeOrBuilder {
    // Use Attribute.newBuilder() to construct.
    private Attribute(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Attribute() {
      name_ = "";
      explicitlySpecified_ = false;
      nodep_ = false;
      type_ = 1;
      intValue_ = 0;
      stringValue_ = "";
      booleanValue_ = false;
      tristateValue_ = 0;
      stringListValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      stringDictValue_ = java.util.Collections.emptyList();
      filesetListValue_ = java.util.Collections.emptyList();
      labelListDictValue_ = java.util.Collections.emptyList();
      stringListDictValue_ = java.util.Collections.emptyList();
      globCriteria_ = java.util.Collections.emptyList();
      intListValue_ = java.util.Collections.emptyList();
      stringDictUnaryValue_ = java.util.Collections.emptyList();
      labelDictUnaryValue_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Attribute(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator value = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000010;
                type_ = rawValue;
              }
              break;
            }
            case 24: {
              bitField0_ |= 0x00000020;
              intValue_ = input.readInt32();
              break;
            }
            case 42: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000040;
              stringValue_ = bs;
              break;
            }
            case 50: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                stringListValue_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000200;
              }
              stringListValue_.add(bs);
              break;
            }
            case 58: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder subBuilder = null;
              if (((bitField0_ & 0x00000200) == 0x00000200)) {
                subBuilder = license_.toBuilder();
              }
              license_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.License.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(license_);
                license_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000200;
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                stringDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry>();
                mutable_bitField0_ |= 0x00000800;
              }
              stringDictValue_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.PARSER, extensionRegistry));
              break;
            }
            case 74: {
              if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                filesetListValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry>();
                mutable_bitField0_ |= 0x00001000;
              }
              filesetListValue_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.PARSER, extensionRegistry));
              break;
            }
            case 82: {
              if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                labelListDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry>();
                mutable_bitField0_ |= 0x00002000;
              }
              labelListDictValue_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.PARSER, extensionRegistry));
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
                stringListDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry>();
                mutable_bitField0_ |= 0x00004000;
              }
              stringListDictValue_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.PARSER, extensionRegistry));
              break;
            }
            case 98: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = dEPRECATEDParseableLocation_.toBuilder();
              }
              dEPRECATEDParseableLocation_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dEPRECATEDParseableLocation_);
                dEPRECATEDParseableLocation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 104: {
              bitField0_ |= 0x00000004;
              explicitlySpecified_ = input.readBool();
              break;
            }
            case 112: {
              bitField0_ |= 0x00000080;
              booleanValue_ = input.readBool();
              break;
            }
            case 120: {
              int rawValue = input.readEnum();
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate value = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(15, rawValue);
              } else {
                bitField0_ |= 0x00000100;
                tristateValue_ = rawValue;
              }
              break;
            }
            case 130: {
              if (!((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
                globCriteria_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria>();
                mutable_bitField0_ |= 0x00008000;
              }
              globCriteria_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.PARSER, extensionRegistry));
              break;
            }
            case 136: {
              if (!((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
                intListValue_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00010000;
              }
              intListValue_.add(input.readInt32());
              break;
            }
            case 138: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00010000) == 0x00010000) && input.getBytesUntilLimit() > 0) {
                intListValue_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00010000;
              }
              while (input.getBytesUntilLimit() > 0) {
                intListValue_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 146: {
              if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
                stringDictUnaryValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry>();
                mutable_bitField0_ |= 0x00020000;
              }
              stringDictUnaryValue_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.PARSER, extensionRegistry));
              break;
            }
            case 154: {
              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
                labelDictUnaryValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry>();
                mutable_bitField0_ |= 0x00040000;
              }
              labelDictUnaryValue_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.PARSER, extensionRegistry));
              break;
            }
            case 160: {
              bitField0_ |= 0x00000008;
              nodep_ = input.readBool();
              break;
            }
            case 170: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.Builder subBuilder = null;
              if (((bitField0_ & 0x00000400) == 0x00000400)) {
                subBuilder = selectorList_.toBuilder();
              }
              selectorList_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(selectorList_);
                selectorList_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000400;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          stringListValue_ = stringListValue_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
          stringDictValue_ = java.util.Collections.unmodifiableList(stringDictValue_);
        }
        if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
          filesetListValue_ = java.util.Collections.unmodifiableList(filesetListValue_);
        }
        if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
          labelListDictValue_ = java.util.Collections.unmodifiableList(labelListDictValue_);
        }
        if (((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
          stringListDictValue_ = java.util.Collections.unmodifiableList(stringListDictValue_);
        }
        if (((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
          globCriteria_ = java.util.Collections.unmodifiableList(globCriteria_);
        }
        if (((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
          intListValue_ = java.util.Collections.unmodifiableList(intListValue_);
        }
        if (((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
          stringDictUnaryValue_ = java.util.Collections.unmodifiableList(stringDictUnaryValue_);
        }
        if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
          labelDictUnaryValue_ = java.util.Collections.unmodifiableList(labelDictUnaryValue_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder.class);
    }

    /**
     * <pre>
     * Indicates the type of attribute.
     * </pre>
     *
     * Protobuf enum {@code blaze_query.Attribute.Discriminator}
     */
    public enum Discriminator
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * int_value
       * </pre>
       *
       * <code>INTEGER = 1;</code>
       */
      INTEGER(1),
      /**
       * <pre>
       * string_value
       * </pre>
       *
       * <code>STRING = 2;</code>
       */
      STRING(2),
      /**
       * <pre>
       * string_value
       * </pre>
       *
       * <code>LABEL = 3;</code>
       */
      LABEL(3),
      /**
       * <pre>
       * string_value
       * </pre>
       *
       * <code>OUTPUT = 4;</code>
       */
      OUTPUT(4),
      /**
       * <pre>
       * string_list_value
       * </pre>
       *
       * <code>STRING_LIST = 5;</code>
       */
      STRING_LIST(5),
      /**
       * <pre>
       * string_list_value
       * </pre>
       *
       * <code>LABEL_LIST = 6;</code>
       */
      LABEL_LIST(6),
      /**
       * <pre>
       * string_list_value
       * </pre>
       *
       * <code>OUTPUT_LIST = 7;</code>
       */
      OUTPUT_LIST(7),
      /**
       * <pre>
       * string_list_value - order is unimportant
       * </pre>
       *
       * <code>DISTRIBUTION_SET = 8;</code>
       */
      DISTRIBUTION_SET(8),
      /**
       * <pre>
       * license
       * </pre>
       *
       * <code>LICENSE = 9;</code>
       */
      LICENSE(9),
      /**
       * <pre>
       * string_dict_value
       * </pre>
       *
       * <code>STRING_DICT = 10;</code>
       */
      STRING_DICT(10),
      /**
       * <pre>
       * fileset_list_value
       * </pre>
       *
       * <code>FILESET_ENTRY_LIST = 11;</code>
       */
      FILESET_ENTRY_LIST(11),
      /**
       * <pre>
       * label_list_dict_value
       * </pre>
       *
       * <code>LABEL_LIST_DICT = 12;</code>
       */
      LABEL_LIST_DICT(12),
      /**
       * <pre>
       * string_list_dict_value
       * </pre>
       *
       * <code>STRING_LIST_DICT = 13;</code>
       */
      STRING_LIST_DICT(13),
      /**
       * <pre>
       * int, bool and string value
       * </pre>
       *
       * <code>BOOLEAN = 14;</code>
       */
      BOOLEAN(14),
      /**
       * <pre>
       * tristate, int and string value
       * </pre>
       *
       * <code>TRISTATE = 15;</code>
       */
      TRISTATE(15),
      /**
       * <pre>
       * int_list_value
       * </pre>
       *
       * <code>INTEGER_LIST = 16;</code>
       */
      INTEGER_LIST(16),
      /**
       * <pre>
       * string_dict_unary_value
       * </pre>
       *
       * <code>STRING_DICT_UNARY = 17;</code>
       */
      STRING_DICT_UNARY(17),
      /**
       * <pre>
       * unknown type, use only for build extensions
       * </pre>
       *
       * <code>UNKNOWN = 18;</code>
       */
      UNKNOWN(18),
      /**
       * <pre>
       * label_dict_unary_value
       * </pre>
       *
       * <code>LABEL_DICT_UNARY = 19;</code>
       */
      LABEL_DICT_UNARY(19),
      /**
       * <pre>
       * selector_list
       * </pre>
       *
       * <code>SELECTOR_LIST = 20;</code>
       */
      SELECTOR_LIST(20),
      ;

      /**
       * <pre>
       * int_value
       * </pre>
       *
       * <code>INTEGER = 1;</code>
       */
      public static final int INTEGER_VALUE = 1;
      /**
       * <pre>
       * string_value
       * </pre>
       *
       * <code>STRING = 2;</code>
       */
      public static final int STRING_VALUE = 2;
      /**
       * <pre>
       * string_value
       * </pre>
       *
       * <code>LABEL = 3;</code>
       */
      public static final int LABEL_VALUE = 3;
      /**
       * <pre>
       * string_value
       * </pre>
       *
       * <code>OUTPUT = 4;</code>
       */
      public static final int OUTPUT_VALUE = 4;
      /**
       * <pre>
       * string_list_value
       * </pre>
       *
       * <code>STRING_LIST = 5;</code>
       */
      public static final int STRING_LIST_VALUE = 5;
      /**
       * <pre>
       * string_list_value
       * </pre>
       *
       * <code>LABEL_LIST = 6;</code>
       */
      public static final int LABEL_LIST_VALUE = 6;
      /**
       * <pre>
       * string_list_value
       * </pre>
       *
       * <code>OUTPUT_LIST = 7;</code>
       */
      public static final int OUTPUT_LIST_VALUE = 7;
      /**
       * <pre>
       * string_list_value - order is unimportant
       * </pre>
       *
       * <code>DISTRIBUTION_SET = 8;</code>
       */
      public static final int DISTRIBUTION_SET_VALUE = 8;
      /**
       * <pre>
       * license
       * </pre>
       *
       * <code>LICENSE = 9;</code>
       */
      public static final int LICENSE_VALUE = 9;
      /**
       * <pre>
       * string_dict_value
       * </pre>
       *
       * <code>STRING_DICT = 10;</code>
       */
      public static final int STRING_DICT_VALUE = 10;
      /**
       * <pre>
       * fileset_list_value
       * </pre>
       *
       * <code>FILESET_ENTRY_LIST = 11;</code>
       */
      public static final int FILESET_ENTRY_LIST_VALUE = 11;
      /**
       * <pre>
       * label_list_dict_value
       * </pre>
       *
       * <code>LABEL_LIST_DICT = 12;</code>
       */
      public static final int LABEL_LIST_DICT_VALUE = 12;
      /**
       * <pre>
       * string_list_dict_value
       * </pre>
       *
       * <code>STRING_LIST_DICT = 13;</code>
       */
      public static final int STRING_LIST_DICT_VALUE = 13;
      /**
       * <pre>
       * int, bool and string value
       * </pre>
       *
       * <code>BOOLEAN = 14;</code>
       */
      public static final int BOOLEAN_VALUE = 14;
      /**
       * <pre>
       * tristate, int and string value
       * </pre>
       *
       * <code>TRISTATE = 15;</code>
       */
      public static final int TRISTATE_VALUE = 15;
      /**
       * <pre>
       * int_list_value
       * </pre>
       *
       * <code>INTEGER_LIST = 16;</code>
       */
      public static final int INTEGER_LIST_VALUE = 16;
      /**
       * <pre>
       * string_dict_unary_value
       * </pre>
       *
       * <code>STRING_DICT_UNARY = 17;</code>
       */
      public static final int STRING_DICT_UNARY_VALUE = 17;
      /**
       * <pre>
       * unknown type, use only for build extensions
       * </pre>
       *
       * <code>UNKNOWN = 18;</code>
       */
      public static final int UNKNOWN_VALUE = 18;
      /**
       * <pre>
       * label_dict_unary_value
       * </pre>
       *
       * <code>LABEL_DICT_UNARY = 19;</code>
       */
      public static final int LABEL_DICT_UNARY_VALUE = 19;
      /**
       * <pre>
       * selector_list
       * </pre>
       *
       * <code>SELECTOR_LIST = 20;</code>
       */
      public static final int SELECTOR_LIST_VALUE = 20;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Discriminator valueOf(int value) {
        return forNumber(value);
      }

      public static Discriminator forNumber(int value) {
        switch (value) {
          case 1: return INTEGER;
          case 2: return STRING;
          case 3: return LABEL;
          case 4: return OUTPUT;
          case 5: return STRING_LIST;
          case 6: return LABEL_LIST;
          case 7: return OUTPUT_LIST;
          case 8: return DISTRIBUTION_SET;
          case 9: return LICENSE;
          case 10: return STRING_DICT;
          case 11: return FILESET_ENTRY_LIST;
          case 12: return LABEL_LIST_DICT;
          case 13: return STRING_LIST_DICT;
          case 14: return BOOLEAN;
          case 15: return TRISTATE;
          case 16: return INTEGER_LIST;
          case 17: return STRING_DICT_UNARY;
          case 18: return UNKNOWN;
          case 19: return LABEL_DICT_UNARY;
          case 20: return SELECTOR_LIST;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

      private Discriminator(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:blaze_query.Attribute.Discriminator)
    }

    /**
     * <pre>
     * Values for the TriState field type.
     * </pre>
     *
     * Protobuf enum {@code blaze_query.Attribute.Tristate}
     */
    public enum Tristate
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>NO = 0;</code>
       */
      NO(0),
      /**
       * <code>YES = 1;</code>
       */
      YES(1),
      /**
       * <code>AUTO = 2;</code>
       */
      AUTO(2),
      ;

      /**
       * <code>NO = 0;</code>
       */
      public static final int NO_VALUE = 0;
      /**
       * <code>YES = 1;</code>
       */
      public static final int YES_VALUE = 1;
      /**
       * <code>AUTO = 2;</code>
       */
      public static final int AUTO_VALUE = 2;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Tristate valueOf(int value) {
        return forNumber(value);
      }

      public static Tristate forNumber(int value) {
        switch (value) {
          case 0: return NO;
          case 1: return YES;
          case 2: return AUTO;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.getDescriptor().getEnumTypes().get(1);
      }

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

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

      private final int value;

      private Tristate(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:blaze_query.Attribute.Tristate)
    }

    public interface SelectorEntryOrBuilder extends
        // @@protoc_insertion_point(interface_extends:blaze_query.Attribute.SelectorEntry)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * The key of the selector entry. At this time, this is the label of a
       * config_setting rule, or the pseudo-label "//conditions:default".
       * </pre>
       *
       * <code>optional string label = 1;</code>
       */
      boolean hasLabel();
      /**
       * <pre>
       * The key of the selector entry. At this time, this is the label of a
       * config_setting rule, or the pseudo-label "//conditions:default".
       * </pre>
       *
       * <code>optional string label = 1;</code>
       */
      java.lang.String getLabel();
      /**
       * <pre>
       * The key of the selector entry. At this time, this is the label of a
       * config_setting rule, or the pseudo-label "//conditions:default".
       * </pre>
       *
       * <code>optional string label = 1;</code>
       */
      com.google.protobuf.ByteString
          getLabelBytes();

      /**
       * <pre>
       * True if the entry's value is the default value for the type as a
       * result of the condition value being specified as None (ie:
       * {"//condition": None}).
       * </pre>
       *
       * <code>optional bool is_default_value = 16;</code>
       */
      boolean hasIsDefaultValue();
      /**
       * <pre>
       * True if the entry's value is the default value for the type as a
       * result of the condition value being specified as None (ie:
       * {"//condition": None}).
       * </pre>
       *
       * <code>optional bool is_default_value = 16;</code>
       */
      boolean getIsDefaultValue();

      /**
       * <pre>
       * Exactly one of the following fields (except for glob_criteria) must be
       * populated - note that the BOOLEAN and TRISTATE caveat in Attribute's
       * comment does not apply here. The type field in the SelectorList
       * containing this entry indicates which of these fields is populated,
       * in accordance with the comments on Discriminator enum values above.
       * (To be explicit: BOOLEAN populates the boolean_value field and TRISTATE
       * populates the tristate_value field.)
       * </pre>
       *
       * <code>optional int32 int_value = 2;</code>
       */
      boolean hasIntValue();
      /**
       * <pre>
       * Exactly one of the following fields (except for glob_criteria) must be
       * populated - note that the BOOLEAN and TRISTATE caveat in Attribute's
       * comment does not apply here. The type field in the SelectorList
       * containing this entry indicates which of these fields is populated,
       * in accordance with the comments on Discriminator enum values above.
       * (To be explicit: BOOLEAN populates the boolean_value field and TRISTATE
       * populates the tristate_value field.)
       * </pre>
       *
       * <code>optional int32 int_value = 2;</code>
       */
      int getIntValue();

      /**
       * <code>optional string string_value = 3;</code>
       */
      boolean hasStringValue();
      /**
       * <code>optional string string_value = 3;</code>
       */
      java.lang.String getStringValue();
      /**
       * <code>optional string string_value = 3;</code>
       */
      com.google.protobuf.ByteString
          getStringValueBytes();

      /**
       * <code>optional bool boolean_value = 4;</code>
       */
      boolean hasBooleanValue();
      /**
       * <code>optional bool boolean_value = 4;</code>
       */
      boolean getBooleanValue();

      /**
       * <code>optional .blaze_query.Attribute.Tristate tristate_value = 5;</code>
       */
      boolean hasTristateValue();
      /**
       * <code>optional .blaze_query.Attribute.Tristate tristate_value = 5;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate getTristateValue();

      /**
       * <code>repeated string string_list_value = 6;</code>
       */
      java.util.List<java.lang.String>
          getStringListValueList();
      /**
       * <code>repeated string string_list_value = 6;</code>
       */
      int getStringListValueCount();
      /**
       * <code>repeated string string_list_value = 6;</code>
       */
      java.lang.String getStringListValue(int index);
      /**
       * <code>repeated string string_list_value = 6;</code>
       */
      com.google.protobuf.ByteString
          getStringListValueBytes(int index);

      /**
       * <code>optional .blaze_query.License license = 7;</code>
       */
      boolean hasLicense();
      /**
       * <code>optional .blaze_query.License license = 7;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense();
      /**
       * <code>optional .blaze_query.License license = 7;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder();

      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> 
          getStringDictValueList();
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getStringDictValue(int index);
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      int getStringDictValueCount();
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> 
          getStringDictValueOrBuilderList();
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder getStringDictValueOrBuilder(
          int index);

      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> 
          getFilesetListValueList();
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getFilesetListValue(int index);
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      int getFilesetListValueCount();
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> 
          getFilesetListValueOrBuilderList();
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder getFilesetListValueOrBuilder(
          int index);

      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> 
          getLabelListDictValueList();
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getLabelListDictValue(int index);
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      int getLabelListDictValueCount();
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> 
          getLabelListDictValueOrBuilderList();
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder getLabelListDictValueOrBuilder(
          int index);

      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> 
          getStringListDictValueList();
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getStringListDictValue(int index);
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      int getStringListDictValueCount();
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> 
          getStringListDictValueOrBuilderList();
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder getStringListDictValueOrBuilder(
          int index);

      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> 
          getGlobCriteriaList();
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getGlobCriteria(int index);
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      int getGlobCriteriaCount();
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> 
          getGlobCriteriaOrBuilderList();
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder getGlobCriteriaOrBuilder(
          int index);

      /**
       * <code>repeated int32 int_list_value = 13;</code>
       */
      java.util.List<java.lang.Integer> getIntListValueList();
      /**
       * <code>repeated int32 int_list_value = 13;</code>
       */
      int getIntListValueCount();
      /**
       * <code>repeated int32 int_list_value = 13;</code>
       */
      int getIntListValue(int index);

      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> 
          getStringDictUnaryValueList();
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getStringDictUnaryValue(int index);
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      int getStringDictUnaryValueCount();
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> 
          getStringDictUnaryValueOrBuilderList();
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder getStringDictUnaryValueOrBuilder(
          int index);

      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> 
          getLabelDictUnaryValueList();
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getLabelDictUnaryValue(int index);
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      int getLabelDictUnaryValueCount();
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> 
          getLabelDictUnaryValueOrBuilderList();
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder getLabelDictUnaryValueOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code blaze_query.Attribute.SelectorEntry}
     */
    public  static final class SelectorEntry extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:blaze_query.Attribute.SelectorEntry)
        SelectorEntryOrBuilder {
      // Use SelectorEntry.newBuilder() to construct.
      private SelectorEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SelectorEntry() {
        label_ = "";
        isDefaultValue_ = false;
        intValue_ = 0;
        stringValue_ = "";
        booleanValue_ = false;
        tristateValue_ = 0;
        stringListValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        stringDictValue_ = java.util.Collections.emptyList();
        filesetListValue_ = java.util.Collections.emptyList();
        labelListDictValue_ = java.util.Collections.emptyList();
        stringListDictValue_ = java.util.Collections.emptyList();
        globCriteria_ = java.util.Collections.emptyList();
        intListValue_ = java.util.Collections.emptyList();
        stringDictUnaryValue_ = java.util.Collections.emptyList();
        labelDictUnaryValue_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SelectorEntry(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                label_ = bs;
                break;
              }
              case 16: {
                bitField0_ |= 0x00000004;
                intValue_ = input.readInt32();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000008;
                stringValue_ = bs;
                break;
              }
              case 32: {
                bitField0_ |= 0x00000010;
                booleanValue_ = input.readBool();
                break;
              }
              case 40: {
                int rawValue = input.readEnum();
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate value = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(5, rawValue);
                } else {
                  bitField0_ |= 0x00000020;
                  tristateValue_ = rawValue;
                }
                break;
              }
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                  stringListValue_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000040;
                }
                stringListValue_.add(bs);
                break;
              }
              case 58: {
                com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder subBuilder = null;
                if (((bitField0_ & 0x00000040) == 0x00000040)) {
                  subBuilder = license_.toBuilder();
                }
                license_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.License.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(license_);
                  license_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000040;
                break;
              }
              case 66: {
                if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                  stringDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry>();
                  mutable_bitField0_ |= 0x00000100;
                }
                stringDictValue_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.PARSER, extensionRegistry));
                break;
              }
              case 74: {
                if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                  filesetListValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry>();
                  mutable_bitField0_ |= 0x00000200;
                }
                filesetListValue_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.PARSER, extensionRegistry));
                break;
              }
              case 82: {
                if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                  labelListDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry>();
                  mutable_bitField0_ |= 0x00000400;
                }
                labelListDictValue_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.PARSER, extensionRegistry));
                break;
              }
              case 90: {
                if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                  stringListDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry>();
                  mutable_bitField0_ |= 0x00000800;
                }
                stringListDictValue_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.PARSER, extensionRegistry));
                break;
              }
              case 98: {
                if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                  globCriteria_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria>();
                  mutable_bitField0_ |= 0x00001000;
                }
                globCriteria_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.PARSER, extensionRegistry));
                break;
              }
              case 104: {
                if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                  intListValue_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00002000;
                }
                intListValue_.add(input.readInt32());
                break;
              }
              case 106: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00002000) == 0x00002000) && input.getBytesUntilLimit() > 0) {
                  intListValue_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00002000;
                }
                while (input.getBytesUntilLimit() > 0) {
                  intListValue_.add(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 114: {
                if (!((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
                  stringDictUnaryValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry>();
                  mutable_bitField0_ |= 0x00004000;
                }
                stringDictUnaryValue_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.PARSER, extensionRegistry));
                break;
              }
              case 122: {
                if (!((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
                  labelDictUnaryValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry>();
                  mutable_bitField0_ |= 0x00008000;
                }
                labelDictUnaryValue_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.PARSER, extensionRegistry));
                break;
              }
              case 128: {
                bitField0_ |= 0x00000002;
                isDefaultValue_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
            stringListValue_ = stringListValue_.getUnmodifiableView();
          }
          if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
            stringDictValue_ = java.util.Collections.unmodifiableList(stringDictValue_);
          }
          if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
            filesetListValue_ = java.util.Collections.unmodifiableList(filesetListValue_);
          }
          if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
            labelListDictValue_ = java.util.Collections.unmodifiableList(labelListDictValue_);
          }
          if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
            stringListDictValue_ = java.util.Collections.unmodifiableList(stringListDictValue_);
          }
          if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
            globCriteria_ = java.util.Collections.unmodifiableList(globCriteria_);
          }
          if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
            intListValue_ = java.util.Collections.unmodifiableList(intListValue_);
          }
          if (((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
            stringDictUnaryValue_ = java.util.Collections.unmodifiableList(stringDictUnaryValue_);
          }
          if (((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
            labelDictUnaryValue_ = java.util.Collections.unmodifiableList(labelDictUnaryValue_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder.class);
      }

      private int bitField0_;
      public static final int LABEL_FIELD_NUMBER = 1;
      private volatile java.lang.Object label_;
      /**
       * <pre>
       * The key of the selector entry. At this time, this is the label of a
       * config_setting rule, or the pseudo-label "//conditions:default".
       * </pre>
       *
       * <code>optional string label = 1;</code>
       */
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The key of the selector entry. At this time, this is the label of a
       * config_setting rule, or the pseudo-label "//conditions:default".
       * </pre>
       *
       * <code>optional string label = 1;</code>
       */
      public java.lang.String getLabel() {
        java.lang.Object ref = label_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            label_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * The key of the selector entry. At this time, this is the label of a
       * config_setting rule, or the pseudo-label "//conditions:default".
       * </pre>
       *
       * <code>optional string label = 1;</code>
       */
      public com.google.protobuf.ByteString
          getLabelBytes() {
        java.lang.Object ref = label_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          label_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int IS_DEFAULT_VALUE_FIELD_NUMBER = 16;
      private boolean isDefaultValue_;
      /**
       * <pre>
       * True if the entry's value is the default value for the type as a
       * result of the condition value being specified as None (ie:
       * {"//condition": None}).
       * </pre>
       *
       * <code>optional bool is_default_value = 16;</code>
       */
      public boolean hasIsDefaultValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * True if the entry's value is the default value for the type as a
       * result of the condition value being specified as None (ie:
       * {"//condition": None}).
       * </pre>
       *
       * <code>optional bool is_default_value = 16;</code>
       */
      public boolean getIsDefaultValue() {
        return isDefaultValue_;
      }

      public static final int INT_VALUE_FIELD_NUMBER = 2;
      private int intValue_;
      /**
       * <pre>
       * Exactly one of the following fields (except for glob_criteria) must be
       * populated - note that the BOOLEAN and TRISTATE caveat in Attribute's
       * comment does not apply here. The type field in the SelectorList
       * containing this entry indicates which of these fields is populated,
       * in accordance with the comments on Discriminator enum values above.
       * (To be explicit: BOOLEAN populates the boolean_value field and TRISTATE
       * populates the tristate_value field.)
       * </pre>
       *
       * <code>optional int32 int_value = 2;</code>
       */
      public boolean hasIntValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * Exactly one of the following fields (except for glob_criteria) must be
       * populated - note that the BOOLEAN and TRISTATE caveat in Attribute's
       * comment does not apply here. The type field in the SelectorList
       * containing this entry indicates which of these fields is populated,
       * in accordance with the comments on Discriminator enum values above.
       * (To be explicit: BOOLEAN populates the boolean_value field and TRISTATE
       * populates the tristate_value field.)
       * </pre>
       *
       * <code>optional int32 int_value = 2;</code>
       */
      public int getIntValue() {
        return intValue_;
      }

      public static final int STRING_VALUE_FIELD_NUMBER = 3;
      private volatile java.lang.Object stringValue_;
      /**
       * <code>optional string string_value = 3;</code>
       */
      public boolean hasStringValue() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string string_value = 3;</code>
       */
      public java.lang.String getStringValue() {
        java.lang.Object ref = stringValue_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            stringValue_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string string_value = 3;</code>
       */
      public com.google.protobuf.ByteString
          getStringValueBytes() {
        java.lang.Object ref = stringValue_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stringValue_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int BOOLEAN_VALUE_FIELD_NUMBER = 4;
      private boolean booleanValue_;
      /**
       * <code>optional bool boolean_value = 4;</code>
       */
      public boolean hasBooleanValue() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional bool boolean_value = 4;</code>
       */
      public boolean getBooleanValue() {
        return booleanValue_;
      }

      public static final int TRISTATE_VALUE_FIELD_NUMBER = 5;
      private int tristateValue_;
      /**
       * <code>optional .blaze_query.Attribute.Tristate tristate_value = 5;</code>
       */
      public boolean hasTristateValue() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional .blaze_query.Attribute.Tristate tristate_value = 5;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate getTristateValue() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.valueOf(tristateValue_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.NO : result;
      }

      public static final int STRING_LIST_VALUE_FIELD_NUMBER = 6;
      private com.google.protobuf.LazyStringList stringListValue_;
      /**
       * <code>repeated string string_list_value = 6;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getStringListValueList() {
        return stringListValue_;
      }
      /**
       * <code>repeated string string_list_value = 6;</code>
       */
      public int getStringListValueCount() {
        return stringListValue_.size();
      }
      /**
       * <code>repeated string string_list_value = 6;</code>
       */
      public java.lang.String getStringListValue(int index) {
        return stringListValue_.get(index);
      }
      /**
       * <code>repeated string string_list_value = 6;</code>
       */
      public com.google.protobuf.ByteString
          getStringListValueBytes(int index) {
        return stringListValue_.getByteString(index);
      }

      public static final int LICENSE_FIELD_NUMBER = 7;
      private com.google.devtools.build.lib.query2.proto.proto2api.Build.License license_;
      /**
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public boolean hasLicense() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense() {
        return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
      }
      /**
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder() {
        return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
      }

      public static final int STRING_DICT_VALUE_FIELD_NUMBER = 8;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> stringDictValue_;
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> getStringDictValueList() {
        return stringDictValue_;
      }
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> 
          getStringDictValueOrBuilderList() {
        return stringDictValue_;
      }
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public int getStringDictValueCount() {
        return stringDictValue_.size();
      }
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getStringDictValue(int index) {
        return stringDictValue_.get(index);
      }
      /**
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder getStringDictValueOrBuilder(
          int index) {
        return stringDictValue_.get(index);
      }

      public static final int FILESET_LIST_VALUE_FIELD_NUMBER = 9;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> filesetListValue_;
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> getFilesetListValueList() {
        return filesetListValue_;
      }
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> 
          getFilesetListValueOrBuilderList() {
        return filesetListValue_;
      }
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public int getFilesetListValueCount() {
        return filesetListValue_.size();
      }
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getFilesetListValue(int index) {
        return filesetListValue_.get(index);
      }
      /**
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder getFilesetListValueOrBuilder(
          int index) {
        return filesetListValue_.get(index);
      }

      public static final int LABEL_LIST_DICT_VALUE_FIELD_NUMBER = 10;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> labelListDictValue_;
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> getLabelListDictValueList() {
        return labelListDictValue_;
      }
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> 
          getLabelListDictValueOrBuilderList() {
        return labelListDictValue_;
      }
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public int getLabelListDictValueCount() {
        return labelListDictValue_.size();
      }
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getLabelListDictValue(int index) {
        return labelListDictValue_.get(index);
      }
      /**
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder getLabelListDictValueOrBuilder(
          int index) {
        return labelListDictValue_.get(index);
      }

      public static final int STRING_LIST_DICT_VALUE_FIELD_NUMBER = 11;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> stringListDictValue_;
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> getStringListDictValueList() {
        return stringListDictValue_;
      }
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> 
          getStringListDictValueOrBuilderList() {
        return stringListDictValue_;
      }
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public int getStringListDictValueCount() {
        return stringListDictValue_.size();
      }
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getStringListDictValue(int index) {
        return stringListDictValue_.get(index);
      }
      /**
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder getStringListDictValueOrBuilder(
          int index) {
        return stringListDictValue_.get(index);
      }

      public static final int GLOB_CRITERIA_FIELD_NUMBER = 12;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> globCriteria_;
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> getGlobCriteriaList() {
        return globCriteria_;
      }
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> 
          getGlobCriteriaOrBuilderList() {
        return globCriteria_;
      }
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      public int getGlobCriteriaCount() {
        return globCriteria_.size();
      }
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getGlobCriteria(int index) {
        return globCriteria_.get(index);
      }
      /**
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder getGlobCriteriaOrBuilder(
          int index) {
        return globCriteria_.get(index);
      }

      public static final int INT_LIST_VALUE_FIELD_NUMBER = 13;
      private java.util.List<java.lang.Integer> intListValue_;
      /**
       * <code>repeated int32 int_list_value = 13;</code>
       */
      public java.util.List<java.lang.Integer>
          getIntListValueList() {
        return intListValue_;
      }
      /**
       * <code>repeated int32 int_list_value = 13;</code>
       */
      public int getIntListValueCount() {
        return intListValue_.size();
      }
      /**
       * <code>repeated int32 int_list_value = 13;</code>
       */
      public int getIntListValue(int index) {
        return intListValue_.get(index);
      }

      public static final int STRING_DICT_UNARY_VALUE_FIELD_NUMBER = 14;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> stringDictUnaryValue_;
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> getStringDictUnaryValueList() {
        return stringDictUnaryValue_;
      }
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> 
          getStringDictUnaryValueOrBuilderList() {
        return stringDictUnaryValue_;
      }
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      public int getStringDictUnaryValueCount() {
        return stringDictUnaryValue_.size();
      }
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getStringDictUnaryValue(int index) {
        return stringDictUnaryValue_.get(index);
      }
      /**
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder getStringDictUnaryValueOrBuilder(
          int index) {
        return stringDictUnaryValue_.get(index);
      }

      public static final int LABEL_DICT_UNARY_VALUE_FIELD_NUMBER = 15;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> labelDictUnaryValue_;
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> getLabelDictUnaryValueList() {
        return labelDictUnaryValue_;
      }
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> 
          getLabelDictUnaryValueOrBuilderList() {
        return labelDictUnaryValue_;
      }
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      public int getLabelDictUnaryValueCount() {
        return labelDictUnaryValue_.size();
      }
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getLabelDictUnaryValue(int index) {
        return labelDictUnaryValue_.get(index);
      }
      /**
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder getLabelDictUnaryValueOrBuilder(
          int index) {
        return labelDictUnaryValue_.get(index);
      }

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

        for (int i = 0; i < getStringDictValueCount(); i++) {
          if (!getStringDictValue(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getFilesetListValueCount(); i++) {
          if (!getFilesetListValue(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getLabelListDictValueCount(); i++) {
          if (!getLabelListDictValue(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getStringListDictValueCount(); i++) {
          if (!getStringListDictValue(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getStringDictUnaryValueCount(); i++) {
          if (!getStringDictUnaryValue(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getLabelDictUnaryValueCount(); i++) {
          if (!getLabelDictUnaryValue(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeInt32(2, intValue_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, stringValue_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBool(4, booleanValue_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeEnum(5, tristateValue_);
        }
        for (int i = 0; i < stringListValue_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 6, stringListValue_.getRaw(i));
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeMessage(7, getLicense());
        }
        for (int i = 0; i < stringDictValue_.size(); i++) {
          output.writeMessage(8, stringDictValue_.get(i));
        }
        for (int i = 0; i < filesetListValue_.size(); i++) {
          output.writeMessage(9, filesetListValue_.get(i));
        }
        for (int i = 0; i < labelListDictValue_.size(); i++) {
          output.writeMessage(10, labelListDictValue_.get(i));
        }
        for (int i = 0; i < stringListDictValue_.size(); i++) {
          output.writeMessage(11, stringListDictValue_.get(i));
        }
        for (int i = 0; i < globCriteria_.size(); i++) {
          output.writeMessage(12, globCriteria_.get(i));
        }
        for (int i = 0; i < intListValue_.size(); i++) {
          output.writeInt32(13, intListValue_.get(i));
        }
        for (int i = 0; i < stringDictUnaryValue_.size(); i++) {
          output.writeMessage(14, stringDictUnaryValue_.get(i));
        }
        for (int i = 0; i < labelDictUnaryValue_.size(); i++) {
          output.writeMessage(15, labelDictUnaryValue_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBool(16, isDefaultValue_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, intValue_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, stringValue_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, booleanValue_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(5, tristateValue_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < stringListValue_.size(); i++) {
            dataSize += computeStringSizeNoTag(stringListValue_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getStringListValueList().size();
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, getLicense());
        }
        for (int i = 0; i < stringDictValue_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, stringDictValue_.get(i));
        }
        for (int i = 0; i < filesetListValue_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, filesetListValue_.get(i));
        }
        for (int i = 0; i < labelListDictValue_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, labelListDictValue_.get(i));
        }
        for (int i = 0; i < stringListDictValue_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(11, stringListDictValue_.get(i));
        }
        for (int i = 0; i < globCriteria_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(12, globCriteria_.get(i));
        }
        {
          int dataSize = 0;
          for (int i = 0; i < intListValue_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(intListValue_.get(i));
          }
          size += dataSize;
          size += 1 * getIntListValueList().size();
        }
        for (int i = 0; i < stringDictUnaryValue_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(14, stringDictUnaryValue_.get(i));
        }
        for (int i = 0; i < labelDictUnaryValue_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(15, labelDictUnaryValue_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(16, isDefaultValue_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry)) {
          return super.equals(obj);
        }
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry) obj;

        boolean result = true;
        result = result && (hasLabel() == other.hasLabel());
        if (hasLabel()) {
          result = result && getLabel()
              .equals(other.getLabel());
        }
        result = result && (hasIsDefaultValue() == other.hasIsDefaultValue());
        if (hasIsDefaultValue()) {
          result = result && (getIsDefaultValue()
              == other.getIsDefaultValue());
        }
        result = result && (hasIntValue() == other.hasIntValue());
        if (hasIntValue()) {
          result = result && (getIntValue()
              == other.getIntValue());
        }
        result = result && (hasStringValue() == other.hasStringValue());
        if (hasStringValue()) {
          result = result && getStringValue()
              .equals(other.getStringValue());
        }
        result = result && (hasBooleanValue() == other.hasBooleanValue());
        if (hasBooleanValue()) {
          result = result && (getBooleanValue()
              == other.getBooleanValue());
        }
        result = result && (hasTristateValue() == other.hasTristateValue());
        if (hasTristateValue()) {
          result = result && tristateValue_ == other.tristateValue_;
        }
        result = result && getStringListValueList()
            .equals(other.getStringListValueList());
        result = result && (hasLicense() == other.hasLicense());
        if (hasLicense()) {
          result = result && getLicense()
              .equals(other.getLicense());
        }
        result = result && getStringDictValueList()
            .equals(other.getStringDictValueList());
        result = result && getFilesetListValueList()
            .equals(other.getFilesetListValueList());
        result = result && getLabelListDictValueList()
            .equals(other.getLabelListDictValueList());
        result = result && getStringListDictValueList()
            .equals(other.getStringListDictValueList());
        result = result && getGlobCriteriaList()
            .equals(other.getGlobCriteriaList());
        result = result && getIntListValueList()
            .equals(other.getIntListValueList());
        result = result && getStringDictUnaryValueList()
            .equals(other.getStringDictUnaryValueList());
        result = result && getLabelDictUnaryValueList()
            .equals(other.getLabelDictUnaryValueList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasLabel()) {
          hash = (37 * hash) + LABEL_FIELD_NUMBER;
          hash = (53 * hash) + getLabel().hashCode();
        }
        if (hasIsDefaultValue()) {
          hash = (37 * hash) + IS_DEFAULT_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getIsDefaultValue());
        }
        if (hasIntValue()) {
          hash = (37 * hash) + INT_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getIntValue();
        }
        if (hasStringValue()) {
          hash = (37 * hash) + STRING_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringValue().hashCode();
        }
        if (hasBooleanValue()) {
          hash = (37 * hash) + BOOLEAN_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getBooleanValue());
        }
        if (hasTristateValue()) {
          hash = (37 * hash) + TRISTATE_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + tristateValue_;
        }
        if (getStringListValueCount() > 0) {
          hash = (37 * hash) + STRING_LIST_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringListValueList().hashCode();
        }
        if (hasLicense()) {
          hash = (37 * hash) + LICENSE_FIELD_NUMBER;
          hash = (53 * hash) + getLicense().hashCode();
        }
        if (getStringDictValueCount() > 0) {
          hash = (37 * hash) + STRING_DICT_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringDictValueList().hashCode();
        }
        if (getFilesetListValueCount() > 0) {
          hash = (37 * hash) + FILESET_LIST_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getFilesetListValueList().hashCode();
        }
        if (getLabelListDictValueCount() > 0) {
          hash = (37 * hash) + LABEL_LIST_DICT_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getLabelListDictValueList().hashCode();
        }
        if (getStringListDictValueCount() > 0) {
          hash = (37 * hash) + STRING_LIST_DICT_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringListDictValueList().hashCode();
        }
        if (getGlobCriteriaCount() > 0) {
          hash = (37 * hash) + GLOB_CRITERIA_FIELD_NUMBER;
          hash = (53 * hash) + getGlobCriteriaList().hashCode();
        }
        if (getIntListValueCount() > 0) {
          hash = (37 * hash) + INT_LIST_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getIntListValueList().hashCode();
        }
        if (getStringDictUnaryValueCount() > 0) {
          hash = (37 * hash) + STRING_DICT_UNARY_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringDictUnaryValueList().hashCode();
        }
        if (getLabelDictUnaryValueCount() > 0) {
          hash = (37 * hash) + LABEL_DICT_UNARY_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getLabelDictUnaryValueList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code blaze_query.Attribute.SelectorEntry}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:blaze_query.Attribute.SelectorEntry)
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorEntry_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorEntry_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getLicenseFieldBuilder();
            getStringDictValueFieldBuilder();
            getFilesetListValueFieldBuilder();
            getLabelListDictValueFieldBuilder();
            getStringListDictValueFieldBuilder();
            getGlobCriteriaFieldBuilder();
            getStringDictUnaryValueFieldBuilder();
            getLabelDictUnaryValueFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          label_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          isDefaultValue_ = false;
          bitField0_ = (bitField0_ & ~0x00000002);
          intValue_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          stringValue_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          booleanValue_ = false;
          bitField0_ = (bitField0_ & ~0x00000010);
          tristateValue_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          stringListValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000040);
          if (licenseBuilder_ == null) {
            license_ = null;
          } else {
            licenseBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          if (stringDictValueBuilder_ == null) {
            stringDictValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            stringDictValueBuilder_.clear();
          }
          if (filesetListValueBuilder_ == null) {
            filesetListValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            filesetListValueBuilder_.clear();
          }
          if (labelListDictValueBuilder_ == null) {
            labelListDictValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            labelListDictValueBuilder_.clear();
          }
          if (stringListDictValueBuilder_ == null) {
            stringListDictValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000800);
          } else {
            stringListDictValueBuilder_.clear();
          }
          if (globCriteriaBuilder_ == null) {
            globCriteria_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00001000);
          } else {
            globCriteriaBuilder_.clear();
          }
          intListValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          if (stringDictUnaryValueBuilder_ == null) {
            stringDictUnaryValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            stringDictUnaryValueBuilder_.clear();
          }
          if (labelDictUnaryValueBuilder_ == null) {
            labelDictUnaryValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00008000);
          } else {
            labelDictUnaryValueBuilder_.clear();
          }
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorEntry_descriptor;
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry getDefaultInstanceForType() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.getDefaultInstance();
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry build() {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry buildPartial() {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.label_ = label_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.isDefaultValue_ = isDefaultValue_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.intValue_ = intValue_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.stringValue_ = stringValue_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.booleanValue_ = booleanValue_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.tristateValue_ = tristateValue_;
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            stringListValue_ = stringListValue_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.stringListValue_ = stringListValue_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000040;
          }
          if (licenseBuilder_ == null) {
            result.license_ = license_;
          } else {
            result.license_ = licenseBuilder_.build();
          }
          if (stringDictValueBuilder_ == null) {
            if (((bitField0_ & 0x00000100) == 0x00000100)) {
              stringDictValue_ = java.util.Collections.unmodifiableList(stringDictValue_);
              bitField0_ = (bitField0_ & ~0x00000100);
            }
            result.stringDictValue_ = stringDictValue_;
          } else {
            result.stringDictValue_ = stringDictValueBuilder_.build();
          }
          if (filesetListValueBuilder_ == null) {
            if (((bitField0_ & 0x00000200) == 0x00000200)) {
              filesetListValue_ = java.util.Collections.unmodifiableList(filesetListValue_);
              bitField0_ = (bitField0_ & ~0x00000200);
            }
            result.filesetListValue_ = filesetListValue_;
          } else {
            result.filesetListValue_ = filesetListValueBuilder_.build();
          }
          if (labelListDictValueBuilder_ == null) {
            if (((bitField0_ & 0x00000400) == 0x00000400)) {
              labelListDictValue_ = java.util.Collections.unmodifiableList(labelListDictValue_);
              bitField0_ = (bitField0_ & ~0x00000400);
            }
            result.labelListDictValue_ = labelListDictValue_;
          } else {
            result.labelListDictValue_ = labelListDictValueBuilder_.build();
          }
          if (stringListDictValueBuilder_ == null) {
            if (((bitField0_ & 0x00000800) == 0x00000800)) {
              stringListDictValue_ = java.util.Collections.unmodifiableList(stringListDictValue_);
              bitField0_ = (bitField0_ & ~0x00000800);
            }
            result.stringListDictValue_ = stringListDictValue_;
          } else {
            result.stringListDictValue_ = stringListDictValueBuilder_.build();
          }
          if (globCriteriaBuilder_ == null) {
            if (((bitField0_ & 0x00001000) == 0x00001000)) {
              globCriteria_ = java.util.Collections.unmodifiableList(globCriteria_);
              bitField0_ = (bitField0_ & ~0x00001000);
            }
            result.globCriteria_ = globCriteria_;
          } else {
            result.globCriteria_ = globCriteriaBuilder_.build();
          }
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            intListValue_ = java.util.Collections.unmodifiableList(intListValue_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.intListValue_ = intListValue_;
          if (stringDictUnaryValueBuilder_ == null) {
            if (((bitField0_ & 0x00004000) == 0x00004000)) {
              stringDictUnaryValue_ = java.util.Collections.unmodifiableList(stringDictUnaryValue_);
              bitField0_ = (bitField0_ & ~0x00004000);
            }
            result.stringDictUnaryValue_ = stringDictUnaryValue_;
          } else {
            result.stringDictUnaryValue_ = stringDictUnaryValueBuilder_.build();
          }
          if (labelDictUnaryValueBuilder_ == null) {
            if (((bitField0_ & 0x00008000) == 0x00008000)) {
              labelDictUnaryValue_ = java.util.Collections.unmodifiableList(labelDictUnaryValue_);
              bitField0_ = (bitField0_ & ~0x00008000);
            }
            result.labelDictUnaryValue_ = labelDictUnaryValue_;
          } else {
            result.labelDictUnaryValue_ = labelDictUnaryValueBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry) {
            return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry other) {
          if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.getDefaultInstance()) return this;
          if (other.hasLabel()) {
            bitField0_ |= 0x00000001;
            label_ = other.label_;
            onChanged();
          }
          if (other.hasIsDefaultValue()) {
            setIsDefaultValue(other.getIsDefaultValue());
          }
          if (other.hasIntValue()) {
            setIntValue(other.getIntValue());
          }
          if (other.hasStringValue()) {
            bitField0_ |= 0x00000008;
            stringValue_ = other.stringValue_;
            onChanged();
          }
          if (other.hasBooleanValue()) {
            setBooleanValue(other.getBooleanValue());
          }
          if (other.hasTristateValue()) {
            setTristateValue(other.getTristateValue());
          }
          if (!other.stringListValue_.isEmpty()) {
            if (stringListValue_.isEmpty()) {
              stringListValue_ = other.stringListValue_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureStringListValueIsMutable();
              stringListValue_.addAll(other.stringListValue_);
            }
            onChanged();
          }
          if (other.hasLicense()) {
            mergeLicense(other.getLicense());
          }
          if (stringDictValueBuilder_ == null) {
            if (!other.stringDictValue_.isEmpty()) {
              if (stringDictValue_.isEmpty()) {
                stringDictValue_ = other.stringDictValue_;
                bitField0_ = (bitField0_ & ~0x00000100);
              } else {
                ensureStringDictValueIsMutable();
                stringDictValue_.addAll(other.stringDictValue_);
              }
              onChanged();
            }
          } else {
            if (!other.stringDictValue_.isEmpty()) {
              if (stringDictValueBuilder_.isEmpty()) {
                stringDictValueBuilder_.dispose();
                stringDictValueBuilder_ = null;
                stringDictValue_ = other.stringDictValue_;
                bitField0_ = (bitField0_ & ~0x00000100);
                stringDictValueBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getStringDictValueFieldBuilder() : null;
              } else {
                stringDictValueBuilder_.addAllMessages(other.stringDictValue_);
              }
            }
          }
          if (filesetListValueBuilder_ == null) {
            if (!other.filesetListValue_.isEmpty()) {
              if (filesetListValue_.isEmpty()) {
                filesetListValue_ = other.filesetListValue_;
                bitField0_ = (bitField0_ & ~0x00000200);
              } else {
                ensureFilesetListValueIsMutable();
                filesetListValue_.addAll(other.filesetListValue_);
              }
              onChanged();
            }
          } else {
            if (!other.filesetListValue_.isEmpty()) {
              if (filesetListValueBuilder_.isEmpty()) {
                filesetListValueBuilder_.dispose();
                filesetListValueBuilder_ = null;
                filesetListValue_ = other.filesetListValue_;
                bitField0_ = (bitField0_ & ~0x00000200);
                filesetListValueBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getFilesetListValueFieldBuilder() : null;
              } else {
                filesetListValueBuilder_.addAllMessages(other.filesetListValue_);
              }
            }
          }
          if (labelListDictValueBuilder_ == null) {
            if (!other.labelListDictValue_.isEmpty()) {
              if (labelListDictValue_.isEmpty()) {
                labelListDictValue_ = other.labelListDictValue_;
                bitField0_ = (bitField0_ & ~0x00000400);
              } else {
                ensureLabelListDictValueIsMutable();
                labelListDictValue_.addAll(other.labelListDictValue_);
              }
              onChanged();
            }
          } else {
            if (!other.labelListDictValue_.isEmpty()) {
              if (labelListDictValueBuilder_.isEmpty()) {
                labelListDictValueBuilder_.dispose();
                labelListDictValueBuilder_ = null;
                labelListDictValue_ = other.labelListDictValue_;
                bitField0_ = (bitField0_ & ~0x00000400);
                labelListDictValueBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getLabelListDictValueFieldBuilder() : null;
              } else {
                labelListDictValueBuilder_.addAllMessages(other.labelListDictValue_);
              }
            }
          }
          if (stringListDictValueBuilder_ == null) {
            if (!other.stringListDictValue_.isEmpty()) {
              if (stringListDictValue_.isEmpty()) {
                stringListDictValue_ = other.stringListDictValue_;
                bitField0_ = (bitField0_ & ~0x00000800);
              } else {
                ensureStringListDictValueIsMutable();
                stringListDictValue_.addAll(other.stringListDictValue_);
              }
              onChanged();
            }
          } else {
            if (!other.stringListDictValue_.isEmpty()) {
              if (stringListDictValueBuilder_.isEmpty()) {
                stringListDictValueBuilder_.dispose();
                stringListDictValueBuilder_ = null;
                stringListDictValue_ = other.stringListDictValue_;
                bitField0_ = (bitField0_ & ~0x00000800);
                stringListDictValueBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getStringListDictValueFieldBuilder() : null;
              } else {
                stringListDictValueBuilder_.addAllMessages(other.stringListDictValue_);
              }
            }
          }
          if (globCriteriaBuilder_ == null) {
            if (!other.globCriteria_.isEmpty()) {
              if (globCriteria_.isEmpty()) {
                globCriteria_ = other.globCriteria_;
                bitField0_ = (bitField0_ & ~0x00001000);
              } else {
                ensureGlobCriteriaIsMutable();
                globCriteria_.addAll(other.globCriteria_);
              }
              onChanged();
            }
          } else {
            if (!other.globCriteria_.isEmpty()) {
              if (globCriteriaBuilder_.isEmpty()) {
                globCriteriaBuilder_.dispose();
                globCriteriaBuilder_ = null;
                globCriteria_ = other.globCriteria_;
                bitField0_ = (bitField0_ & ~0x00001000);
                globCriteriaBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getGlobCriteriaFieldBuilder() : null;
              } else {
                globCriteriaBuilder_.addAllMessages(other.globCriteria_);
              }
            }
          }
          if (!other.intListValue_.isEmpty()) {
            if (intListValue_.isEmpty()) {
              intListValue_ = other.intListValue_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureIntListValueIsMutable();
              intListValue_.addAll(other.intListValue_);
            }
            onChanged();
          }
          if (stringDictUnaryValueBuilder_ == null) {
            if (!other.stringDictUnaryValue_.isEmpty()) {
              if (stringDictUnaryValue_.isEmpty()) {
                stringDictUnaryValue_ = other.stringDictUnaryValue_;
                bitField0_ = (bitField0_ & ~0x00004000);
              } else {
                ensureStringDictUnaryValueIsMutable();
                stringDictUnaryValue_.addAll(other.stringDictUnaryValue_);
              }
              onChanged();
            }
          } else {
            if (!other.stringDictUnaryValue_.isEmpty()) {
              if (stringDictUnaryValueBuilder_.isEmpty()) {
                stringDictUnaryValueBuilder_.dispose();
                stringDictUnaryValueBuilder_ = null;
                stringDictUnaryValue_ = other.stringDictUnaryValue_;
                bitField0_ = (bitField0_ & ~0x00004000);
                stringDictUnaryValueBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getStringDictUnaryValueFieldBuilder() : null;
              } else {
                stringDictUnaryValueBuilder_.addAllMessages(other.stringDictUnaryValue_);
              }
            }
          }
          if (labelDictUnaryValueBuilder_ == null) {
            if (!other.labelDictUnaryValue_.isEmpty()) {
              if (labelDictUnaryValue_.isEmpty()) {
                labelDictUnaryValue_ = other.labelDictUnaryValue_;
                bitField0_ = (bitField0_ & ~0x00008000);
              } else {
                ensureLabelDictUnaryValueIsMutable();
                labelDictUnaryValue_.addAll(other.labelDictUnaryValue_);
              }
              onChanged();
            }
          } else {
            if (!other.labelDictUnaryValue_.isEmpty()) {
              if (labelDictUnaryValueBuilder_.isEmpty()) {
                labelDictUnaryValueBuilder_.dispose();
                labelDictUnaryValueBuilder_ = null;
                labelDictUnaryValue_ = other.labelDictUnaryValue_;
                bitField0_ = (bitField0_ & ~0x00008000);
                labelDictUnaryValueBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getLabelDictUnaryValueFieldBuilder() : null;
              } else {
                labelDictUnaryValueBuilder_.addAllMessages(other.labelDictUnaryValue_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          for (int i = 0; i < getStringDictValueCount(); i++) {
            if (!getStringDictValue(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getFilesetListValueCount(); i++) {
            if (!getFilesetListValue(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getLabelListDictValueCount(); i++) {
            if (!getLabelListDictValue(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getStringListDictValueCount(); i++) {
            if (!getStringListDictValue(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getStringDictUnaryValueCount(); i++) {
            if (!getStringDictUnaryValue(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getLabelDictUnaryValueCount(); i++) {
            if (!getLabelDictUnaryValue(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.lang.Object label_ = "";
        /**
         * <pre>
         * The key of the selector entry. At this time, this is the label of a
         * config_setting rule, or the pseudo-label "//conditions:default".
         * </pre>
         *
         * <code>optional string label = 1;</code>
         */
        public boolean hasLabel() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         * The key of the selector entry. At this time, this is the label of a
         * config_setting rule, or the pseudo-label "//conditions:default".
         * </pre>
         *
         * <code>optional string label = 1;</code>
         */
        public java.lang.String getLabel() {
          java.lang.Object ref = label_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              label_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The key of the selector entry. At this time, this is the label of a
         * config_setting rule, or the pseudo-label "//conditions:default".
         * </pre>
         *
         * <code>optional string label = 1;</code>
         */
        public com.google.protobuf.ByteString
            getLabelBytes() {
          java.lang.Object ref = label_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            label_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The key of the selector entry. At this time, this is the label of a
         * config_setting rule, or the pseudo-label "//conditions:default".
         * </pre>
         *
         * <code>optional string label = 1;</code>
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          label_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The key of the selector entry. At this time, this is the label of a
         * config_setting rule, or the pseudo-label "//conditions:default".
         * </pre>
         *
         * <code>optional string label = 1;</code>
         */
        public Builder clearLabel() {
          bitField0_ = (bitField0_ & ~0x00000001);
          label_ = getDefaultInstance().getLabel();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The key of the selector entry. At this time, this is the label of a
         * config_setting rule, or the pseudo-label "//conditions:default".
         * </pre>
         *
         * <code>optional string label = 1;</code>
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
          label_ = value;
          onChanged();
          return this;
        }

        private boolean isDefaultValue_ ;
        /**
         * <pre>
         * True if the entry's value is the default value for the type as a
         * result of the condition value being specified as None (ie:
         * {"//condition": None}).
         * </pre>
         *
         * <code>optional bool is_default_value = 16;</code>
         */
        public boolean hasIsDefaultValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         * True if the entry's value is the default value for the type as a
         * result of the condition value being specified as None (ie:
         * {"//condition": None}).
         * </pre>
         *
         * <code>optional bool is_default_value = 16;</code>
         */
        public boolean getIsDefaultValue() {
          return isDefaultValue_;
        }
        /**
         * <pre>
         * True if the entry's value is the default value for the type as a
         * result of the condition value being specified as None (ie:
         * {"//condition": None}).
         * </pre>
         *
         * <code>optional bool is_default_value = 16;</code>
         */
        public Builder setIsDefaultValue(boolean value) {
          bitField0_ |= 0x00000002;
          isDefaultValue_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * True if the entry's value is the default value for the type as a
         * result of the condition value being specified as None (ie:
         * {"//condition": None}).
         * </pre>
         *
         * <code>optional bool is_default_value = 16;</code>
         */
        public Builder clearIsDefaultValue() {
          bitField0_ = (bitField0_ & ~0x00000002);
          isDefaultValue_ = false;
          onChanged();
          return this;
        }

        private int intValue_ ;
        /**
         * <pre>
         * Exactly one of the following fields (except for glob_criteria) must be
         * populated - note that the BOOLEAN and TRISTATE caveat in Attribute's
         * comment does not apply here. The type field in the SelectorList
         * containing this entry indicates which of these fields is populated,
         * in accordance with the comments on Discriminator enum values above.
         * (To be explicit: BOOLEAN populates the boolean_value field and TRISTATE
         * populates the tristate_value field.)
         * </pre>
         *
         * <code>optional int32 int_value = 2;</code>
         */
        public boolean hasIntValue() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         * Exactly one of the following fields (except for glob_criteria) must be
         * populated - note that the BOOLEAN and TRISTATE caveat in Attribute's
         * comment does not apply here. The type field in the SelectorList
         * containing this entry indicates which of these fields is populated,
         * in accordance with the comments on Discriminator enum values above.
         * (To be explicit: BOOLEAN populates the boolean_value field and TRISTATE
         * populates the tristate_value field.)
         * </pre>
         *
         * <code>optional int32 int_value = 2;</code>
         */
        public int getIntValue() {
          return intValue_;
        }
        /**
         * <pre>
         * Exactly one of the following fields (except for glob_criteria) must be
         * populated - note that the BOOLEAN and TRISTATE caveat in Attribute's
         * comment does not apply here. The type field in the SelectorList
         * containing this entry indicates which of these fields is populated,
         * in accordance with the comments on Discriminator enum values above.
         * (To be explicit: BOOLEAN populates the boolean_value field and TRISTATE
         * populates the tristate_value field.)
         * </pre>
         *
         * <code>optional int32 int_value = 2;</code>
         */
        public Builder setIntValue(int value) {
          bitField0_ |= 0x00000004;
          intValue_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Exactly one of the following fields (except for glob_criteria) must be
         * populated - note that the BOOLEAN and TRISTATE caveat in Attribute's
         * comment does not apply here. The type field in the SelectorList
         * containing this entry indicates which of these fields is populated,
         * in accordance with the comments on Discriminator enum values above.
         * (To be explicit: BOOLEAN populates the boolean_value field and TRISTATE
         * populates the tristate_value field.)
         * </pre>
         *
         * <code>optional int32 int_value = 2;</code>
         */
        public Builder clearIntValue() {
          bitField0_ = (bitField0_ & ~0x00000004);
          intValue_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object stringValue_ = "";
        /**
         * <code>optional string string_value = 3;</code>
         */
        public boolean hasStringValue() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional string string_value = 3;</code>
         */
        public java.lang.String getStringValue() {
          java.lang.Object ref = stringValue_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              stringValue_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string string_value = 3;</code>
         */
        public com.google.protobuf.ByteString
            getStringValueBytes() {
          java.lang.Object ref = stringValue_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            stringValue_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string string_value = 3;</code>
         */
        public Builder setStringValue(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          stringValue_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string string_value = 3;</code>
         */
        public Builder clearStringValue() {
          bitField0_ = (bitField0_ & ~0x00000008);
          stringValue_ = getDefaultInstance().getStringValue();
          onChanged();
          return this;
        }
        /**
         * <code>optional string string_value = 3;</code>
         */
        public Builder setStringValueBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
          stringValue_ = value;
          onChanged();
          return this;
        }

        private boolean booleanValue_ ;
        /**
         * <code>optional bool boolean_value = 4;</code>
         */
        public boolean hasBooleanValue() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional bool boolean_value = 4;</code>
         */
        public boolean getBooleanValue() {
          return booleanValue_;
        }
        /**
         * <code>optional bool boolean_value = 4;</code>
         */
        public Builder setBooleanValue(boolean value) {
          bitField0_ |= 0x00000010;
          booleanValue_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool boolean_value = 4;</code>
         */
        public Builder clearBooleanValue() {
          bitField0_ = (bitField0_ & ~0x00000010);
          booleanValue_ = false;
          onChanged();
          return this;
        }

        private int tristateValue_ = 0;
        /**
         * <code>optional .blaze_query.Attribute.Tristate tristate_value = 5;</code>
         */
        public boolean hasTristateValue() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional .blaze_query.Attribute.Tristate tristate_value = 5;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate getTristateValue() {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.valueOf(tristateValue_);
          return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.NO : result;
        }
        /**
         * <code>optional .blaze_query.Attribute.Tristate tristate_value = 5;</code>
         */
        public Builder setTristateValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000020;
          tristateValue_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>optional .blaze_query.Attribute.Tristate tristate_value = 5;</code>
         */
        public Builder clearTristateValue() {
          bitField0_ = (bitField0_ & ~0x00000020);
          tristateValue_ = 0;
          onChanged();
          return this;
        }

        private com.google.protobuf.LazyStringList stringListValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureStringListValueIsMutable() {
          if (!((bitField0_ & 0x00000040) == 0x00000040)) {
            stringListValue_ = new com.google.protobuf.LazyStringArrayList(stringListValue_);
            bitField0_ |= 0x00000040;
           }
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public com.google.protobuf.ProtocolStringList
            getStringListValueList() {
          return stringListValue_.getUnmodifiableView();
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public int getStringListValueCount() {
          return stringListValue_.size();
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public java.lang.String getStringListValue(int index) {
          return stringListValue_.get(index);
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public com.google.protobuf.ByteString
            getStringListValueBytes(int index) {
          return stringListValue_.getByteString(index);
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public Builder setStringListValue(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureStringListValueIsMutable();
          stringListValue_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public Builder addStringListValue(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureStringListValueIsMutable();
          stringListValue_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public Builder addAllStringListValue(
            java.lang.Iterable<java.lang.String> values) {
          ensureStringListValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, stringListValue_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public Builder clearStringListValue() {
          stringListValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string string_list_value = 6;</code>
         */
        public Builder addStringListValueBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureStringListValueIsMutable();
          stringListValue_.add(value);
          onChanged();
          return this;
        }

        private com.google.devtools.build.lib.query2.proto.proto2api.Build.License license_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder> licenseBuilder_;
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        public boolean hasLicense() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense() {
          if (licenseBuilder_ == null) {
            return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
          } else {
            return licenseBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        public Builder setLicense(com.google.devtools.build.lib.query2.proto.proto2api.Build.License value) {
          if (licenseBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            license_ = value;
            onChanged();
          } else {
            licenseBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        public Builder setLicense(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder builderForValue) {
          if (licenseBuilder_ == null) {
            license_ = builderForValue.build();
            onChanged();
          } else {
            licenseBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        public Builder mergeLicense(com.google.devtools.build.lib.query2.proto.proto2api.Build.License value) {
          if (licenseBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080) &&
                license_ != null &&
                license_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance()) {
              license_ =
                com.google.devtools.build.lib.query2.proto.proto2api.Build.License.newBuilder(license_).mergeFrom(value).buildPartial();
            } else {
              license_ = value;
            }
            onChanged();
          } else {
            licenseBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        public Builder clearLicense() {
          if (licenseBuilder_ == null) {
            license_ = null;
            onChanged();
          } else {
            licenseBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder getLicenseBuilder() {
          bitField0_ |= 0x00000080;
          onChanged();
          return getLicenseFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder() {
          if (licenseBuilder_ != null) {
            return licenseBuilder_.getMessageOrBuilder();
          } else {
            return license_ == null ?
                com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
          }
        }
        /**
         * <code>optional .blaze_query.License license = 7;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder> 
            getLicenseFieldBuilder() {
          if (licenseBuilder_ == null) {
            licenseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder>(
                    getLicense(),
                    getParentForChildren(),
                    isClean());
            license_ = null;
          }
          return licenseBuilder_;
        }

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> stringDictValue_ =
          java.util.Collections.emptyList();
        private void ensureStringDictValueIsMutable() {
          if (!((bitField0_ & 0x00000100) == 0x00000100)) {
            stringDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry>(stringDictValue_);
            bitField0_ |= 0x00000100;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> stringDictValueBuilder_;

        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> getStringDictValueList() {
          if (stringDictValueBuilder_ == null) {
            return java.util.Collections.unmodifiableList(stringDictValue_);
          } else {
            return stringDictValueBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public int getStringDictValueCount() {
          if (stringDictValueBuilder_ == null) {
            return stringDictValue_.size();
          } else {
            return stringDictValueBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getStringDictValue(int index) {
          if (stringDictValueBuilder_ == null) {
            return stringDictValue_.get(index);
          } else {
            return stringDictValueBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder setStringDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry value) {
          if (stringDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringDictValueIsMutable();
            stringDictValue_.set(index, value);
            onChanged();
          } else {
            stringDictValueBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder setStringDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder builderForValue) {
          if (stringDictValueBuilder_ == null) {
            ensureStringDictValueIsMutable();
            stringDictValue_.set(index, builderForValue.build());
            onChanged();
          } else {
            stringDictValueBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder addStringDictValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry value) {
          if (stringDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringDictValueIsMutable();
            stringDictValue_.add(value);
            onChanged();
          } else {
            stringDictValueBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder addStringDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry value) {
          if (stringDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringDictValueIsMutable();
            stringDictValue_.add(index, value);
            onChanged();
          } else {
            stringDictValueBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder addStringDictValue(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder builderForValue) {
          if (stringDictValueBuilder_ == null) {
            ensureStringDictValueIsMutable();
            stringDictValue_.add(builderForValue.build());
            onChanged();
          } else {
            stringDictValueBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder addStringDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder builderForValue) {
          if (stringDictValueBuilder_ == null) {
            ensureStringDictValueIsMutable();
            stringDictValue_.add(index, builderForValue.build());
            onChanged();
          } else {
            stringDictValueBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder addAllStringDictValue(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> values) {
          if (stringDictValueBuilder_ == null) {
            ensureStringDictValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, stringDictValue_);
            onChanged();
          } else {
            stringDictValueBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder clearStringDictValue() {
          if (stringDictValueBuilder_ == null) {
            stringDictValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000100);
            onChanged();
          } else {
            stringDictValueBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public Builder removeStringDictValue(int index) {
          if (stringDictValueBuilder_ == null) {
            ensureStringDictValueIsMutable();
            stringDictValue_.remove(index);
            onChanged();
          } else {
            stringDictValueBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder getStringDictValueBuilder(
            int index) {
          return getStringDictValueFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder getStringDictValueOrBuilder(
            int index) {
          if (stringDictValueBuilder_ == null) {
            return stringDictValue_.get(index);  } else {
            return stringDictValueBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> 
             getStringDictValueOrBuilderList() {
          if (stringDictValueBuilder_ != null) {
            return stringDictValueBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(stringDictValue_);
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder addStringDictValueBuilder() {
          return getStringDictValueFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder addStringDictValueBuilder(
            int index) {
          return getStringDictValueFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder> 
             getStringDictValueBuilderList() {
          return getStringDictValueFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> 
            getStringDictValueFieldBuilder() {
          if (stringDictValueBuilder_ == null) {
            stringDictValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder>(
                    stringDictValue_,
                    ((bitField0_ & 0x00000100) == 0x00000100),
                    getParentForChildren(),
                    isClean());
            stringDictValue_ = null;
          }
          return stringDictValueBuilder_;
        }

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> filesetListValue_ =
          java.util.Collections.emptyList();
        private void ensureFilesetListValueIsMutable() {
          if (!((bitField0_ & 0x00000200) == 0x00000200)) {
            filesetListValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry>(filesetListValue_);
            bitField0_ |= 0x00000200;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> filesetListValueBuilder_;

        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> getFilesetListValueList() {
          if (filesetListValueBuilder_ == null) {
            return java.util.Collections.unmodifiableList(filesetListValue_);
          } else {
            return filesetListValueBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public int getFilesetListValueCount() {
          if (filesetListValueBuilder_ == null) {
            return filesetListValue_.size();
          } else {
            return filesetListValueBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getFilesetListValue(int index) {
          if (filesetListValueBuilder_ == null) {
            return filesetListValue_.get(index);
          } else {
            return filesetListValueBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder setFilesetListValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry value) {
          if (filesetListValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFilesetListValueIsMutable();
            filesetListValue_.set(index, value);
            onChanged();
          } else {
            filesetListValueBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder setFilesetListValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder builderForValue) {
          if (filesetListValueBuilder_ == null) {
            ensureFilesetListValueIsMutable();
            filesetListValue_.set(index, builderForValue.build());
            onChanged();
          } else {
            filesetListValueBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder addFilesetListValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry value) {
          if (filesetListValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFilesetListValueIsMutable();
            filesetListValue_.add(value);
            onChanged();
          } else {
            filesetListValueBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder addFilesetListValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry value) {
          if (filesetListValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureFilesetListValueIsMutable();
            filesetListValue_.add(index, value);
            onChanged();
          } else {
            filesetListValueBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder addFilesetListValue(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder builderForValue) {
          if (filesetListValueBuilder_ == null) {
            ensureFilesetListValueIsMutable();
            filesetListValue_.add(builderForValue.build());
            onChanged();
          } else {
            filesetListValueBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder addFilesetListValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder builderForValue) {
          if (filesetListValueBuilder_ == null) {
            ensureFilesetListValueIsMutable();
            filesetListValue_.add(index, builderForValue.build());
            onChanged();
          } else {
            filesetListValueBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder addAllFilesetListValue(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> values) {
          if (filesetListValueBuilder_ == null) {
            ensureFilesetListValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, filesetListValue_);
            onChanged();
          } else {
            filesetListValueBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder clearFilesetListValue() {
          if (filesetListValueBuilder_ == null) {
            filesetListValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
            onChanged();
          } else {
            filesetListValueBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public Builder removeFilesetListValue(int index) {
          if (filesetListValueBuilder_ == null) {
            ensureFilesetListValueIsMutable();
            filesetListValue_.remove(index);
            onChanged();
          } else {
            filesetListValueBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder getFilesetListValueBuilder(
            int index) {
          return getFilesetListValueFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder getFilesetListValueOrBuilder(
            int index) {
          if (filesetListValueBuilder_ == null) {
            return filesetListValue_.get(index);  } else {
            return filesetListValueBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> 
             getFilesetListValueOrBuilderList() {
          if (filesetListValueBuilder_ != null) {
            return filesetListValueBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(filesetListValue_);
          }
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder addFilesetListValueBuilder() {
          return getFilesetListValueFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder addFilesetListValueBuilder(
            int index) {
          return getFilesetListValueFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder> 
             getFilesetListValueBuilderList() {
          return getFilesetListValueFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> 
            getFilesetListValueFieldBuilder() {
          if (filesetListValueBuilder_ == null) {
            filesetListValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder>(
                    filesetListValue_,
                    ((bitField0_ & 0x00000200) == 0x00000200),
                    getParentForChildren(),
                    isClean());
            filesetListValue_ = null;
          }
          return filesetListValueBuilder_;
        }

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> labelListDictValue_ =
          java.util.Collections.emptyList();
        private void ensureLabelListDictValueIsMutable() {
          if (!((bitField0_ & 0x00000400) == 0x00000400)) {
            labelListDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry>(labelListDictValue_);
            bitField0_ |= 0x00000400;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> labelListDictValueBuilder_;

        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> getLabelListDictValueList() {
          if (labelListDictValueBuilder_ == null) {
            return java.util.Collections.unmodifiableList(labelListDictValue_);
          } else {
            return labelListDictValueBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public int getLabelListDictValueCount() {
          if (labelListDictValueBuilder_ == null) {
            return labelListDictValue_.size();
          } else {
            return labelListDictValueBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getLabelListDictValue(int index) {
          if (labelListDictValueBuilder_ == null) {
            return labelListDictValue_.get(index);
          } else {
            return labelListDictValueBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder setLabelListDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry value) {
          if (labelListDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLabelListDictValueIsMutable();
            labelListDictValue_.set(index, value);
            onChanged();
          } else {
            labelListDictValueBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder setLabelListDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder builderForValue) {
          if (labelListDictValueBuilder_ == null) {
            ensureLabelListDictValueIsMutable();
            labelListDictValue_.set(index, builderForValue.build());
            onChanged();
          } else {
            labelListDictValueBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder addLabelListDictValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry value) {
          if (labelListDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLabelListDictValueIsMutable();
            labelListDictValue_.add(value);
            onChanged();
          } else {
            labelListDictValueBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder addLabelListDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry value) {
          if (labelListDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLabelListDictValueIsMutable();
            labelListDictValue_.add(index, value);
            onChanged();
          } else {
            labelListDictValueBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder addLabelListDictValue(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder builderForValue) {
          if (labelListDictValueBuilder_ == null) {
            ensureLabelListDictValueIsMutable();
            labelListDictValue_.add(builderForValue.build());
            onChanged();
          } else {
            labelListDictValueBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder addLabelListDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder builderForValue) {
          if (labelListDictValueBuilder_ == null) {
            ensureLabelListDictValueIsMutable();
            labelListDictValue_.add(index, builderForValue.build());
            onChanged();
          } else {
            labelListDictValueBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder addAllLabelListDictValue(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> values) {
          if (labelListDictValueBuilder_ == null) {
            ensureLabelListDictValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, labelListDictValue_);
            onChanged();
          } else {
            labelListDictValueBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder clearLabelListDictValue() {
          if (labelListDictValueBuilder_ == null) {
            labelListDictValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000400);
            onChanged();
          } else {
            labelListDictValueBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public Builder removeLabelListDictValue(int index) {
          if (labelListDictValueBuilder_ == null) {
            ensureLabelListDictValueIsMutable();
            labelListDictValue_.remove(index);
            onChanged();
          } else {
            labelListDictValueBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder getLabelListDictValueBuilder(
            int index) {
          return getLabelListDictValueFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder getLabelListDictValueOrBuilder(
            int index) {
          if (labelListDictValueBuilder_ == null) {
            return labelListDictValue_.get(index);  } else {
            return labelListDictValueBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> 
             getLabelListDictValueOrBuilderList() {
          if (labelListDictValueBuilder_ != null) {
            return labelListDictValueBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(labelListDictValue_);
          }
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder addLabelListDictValueBuilder() {
          return getLabelListDictValueFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder addLabelListDictValueBuilder(
            int index) {
          return getLabelListDictValueFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder> 
             getLabelListDictValueBuilderList() {
          return getLabelListDictValueFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> 
            getLabelListDictValueFieldBuilder() {
          if (labelListDictValueBuilder_ == null) {
            labelListDictValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder>(
                    labelListDictValue_,
                    ((bitField0_ & 0x00000400) == 0x00000400),
                    getParentForChildren(),
                    isClean());
            labelListDictValue_ = null;
          }
          return labelListDictValueBuilder_;
        }

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> stringListDictValue_ =
          java.util.Collections.emptyList();
        private void ensureStringListDictValueIsMutable() {
          if (!((bitField0_ & 0x00000800) == 0x00000800)) {
            stringListDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry>(stringListDictValue_);
            bitField0_ |= 0x00000800;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> stringListDictValueBuilder_;

        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> getStringListDictValueList() {
          if (stringListDictValueBuilder_ == null) {
            return java.util.Collections.unmodifiableList(stringListDictValue_);
          } else {
            return stringListDictValueBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public int getStringListDictValueCount() {
          if (stringListDictValueBuilder_ == null) {
            return stringListDictValue_.size();
          } else {
            return stringListDictValueBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getStringListDictValue(int index) {
          if (stringListDictValueBuilder_ == null) {
            return stringListDictValue_.get(index);
          } else {
            return stringListDictValueBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder setStringListDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry value) {
          if (stringListDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringListDictValueIsMutable();
            stringListDictValue_.set(index, value);
            onChanged();
          } else {
            stringListDictValueBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder setStringListDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder builderForValue) {
          if (stringListDictValueBuilder_ == null) {
            ensureStringListDictValueIsMutable();
            stringListDictValue_.set(index, builderForValue.build());
            onChanged();
          } else {
            stringListDictValueBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder addStringListDictValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry value) {
          if (stringListDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringListDictValueIsMutable();
            stringListDictValue_.add(value);
            onChanged();
          } else {
            stringListDictValueBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder addStringListDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry value) {
          if (stringListDictValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringListDictValueIsMutable();
            stringListDictValue_.add(index, value);
            onChanged();
          } else {
            stringListDictValueBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder addStringListDictValue(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder builderForValue) {
          if (stringListDictValueBuilder_ == null) {
            ensureStringListDictValueIsMutable();
            stringListDictValue_.add(builderForValue.build());
            onChanged();
          } else {
            stringListDictValueBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder addStringListDictValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder builderForValue) {
          if (stringListDictValueBuilder_ == null) {
            ensureStringListDictValueIsMutable();
            stringListDictValue_.add(index, builderForValue.build());
            onChanged();
          } else {
            stringListDictValueBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder addAllStringListDictValue(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> values) {
          if (stringListDictValueBuilder_ == null) {
            ensureStringListDictValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, stringListDictValue_);
            onChanged();
          } else {
            stringListDictValueBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder clearStringListDictValue() {
          if (stringListDictValueBuilder_ == null) {
            stringListDictValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000800);
            onChanged();
          } else {
            stringListDictValueBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public Builder removeStringListDictValue(int index) {
          if (stringListDictValueBuilder_ == null) {
            ensureStringListDictValueIsMutable();
            stringListDictValue_.remove(index);
            onChanged();
          } else {
            stringListDictValueBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder getStringListDictValueBuilder(
            int index) {
          return getStringListDictValueFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder getStringListDictValueOrBuilder(
            int index) {
          if (stringListDictValueBuilder_ == null) {
            return stringListDictValue_.get(index);  } else {
            return stringListDictValueBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> 
             getStringListDictValueOrBuilderList() {
          if (stringListDictValueBuilder_ != null) {
            return stringListDictValueBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(stringListDictValue_);
          }
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder addStringListDictValueBuilder() {
          return getStringListDictValueFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder addStringListDictValueBuilder(
            int index) {
          return getStringListDictValueFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder> 
             getStringListDictValueBuilderList() {
          return getStringListDictValueFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> 
            getStringListDictValueFieldBuilder() {
          if (stringListDictValueBuilder_ == null) {
            stringListDictValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder>(
                    stringListDictValue_,
                    ((bitField0_ & 0x00000800) == 0x00000800),
                    getParentForChildren(),
                    isClean());
            stringListDictValue_ = null;
          }
          return stringListDictValueBuilder_;
        }

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> globCriteria_ =
          java.util.Collections.emptyList();
        private void ensureGlobCriteriaIsMutable() {
          if (!((bitField0_ & 0x00001000) == 0x00001000)) {
            globCriteria_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria>(globCriteria_);
            bitField0_ |= 0x00001000;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> globCriteriaBuilder_;

        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> getGlobCriteriaList() {
          if (globCriteriaBuilder_ == null) {
            return java.util.Collections.unmodifiableList(globCriteria_);
          } else {
            return globCriteriaBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public int getGlobCriteriaCount() {
          if (globCriteriaBuilder_ == null) {
            return globCriteria_.size();
          } else {
            return globCriteriaBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getGlobCriteria(int index) {
          if (globCriteriaBuilder_ == null) {
            return globCriteria_.get(index);
          } else {
            return globCriteriaBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder setGlobCriteria(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria value) {
          if (globCriteriaBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGlobCriteriaIsMutable();
            globCriteria_.set(index, value);
            onChanged();
          } else {
            globCriteriaBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder setGlobCriteria(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder builderForValue) {
          if (globCriteriaBuilder_ == null) {
            ensureGlobCriteriaIsMutable();
            globCriteria_.set(index, builderForValue.build());
            onChanged();
          } else {
            globCriteriaBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder addGlobCriteria(com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria value) {
          if (globCriteriaBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGlobCriteriaIsMutable();
            globCriteria_.add(value);
            onChanged();
          } else {
            globCriteriaBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder addGlobCriteria(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria value) {
          if (globCriteriaBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGlobCriteriaIsMutable();
            globCriteria_.add(index, value);
            onChanged();
          } else {
            globCriteriaBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder addGlobCriteria(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder builderForValue) {
          if (globCriteriaBuilder_ == null) {
            ensureGlobCriteriaIsMutable();
            globCriteria_.add(builderForValue.build());
            onChanged();
          } else {
            globCriteriaBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder addGlobCriteria(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder builderForValue) {
          if (globCriteriaBuilder_ == null) {
            ensureGlobCriteriaIsMutable();
            globCriteria_.add(index, builderForValue.build());
            onChanged();
          } else {
            globCriteriaBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder addAllGlobCriteria(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> values) {
          if (globCriteriaBuilder_ == null) {
            ensureGlobCriteriaIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, globCriteria_);
            onChanged();
          } else {
            globCriteriaBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder clearGlobCriteria() {
          if (globCriteriaBuilder_ == null) {
            globCriteria_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00001000);
            onChanged();
          } else {
            globCriteriaBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public Builder removeGlobCriteria(int index) {
          if (globCriteriaBuilder_ == null) {
            ensureGlobCriteriaIsMutable();
            globCriteria_.remove(index);
            onChanged();
          } else {
            globCriteriaBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder getGlobCriteriaBuilder(
            int index) {
          return getGlobCriteriaFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder getGlobCriteriaOrBuilder(
            int index) {
          if (globCriteriaBuilder_ == null) {
            return globCriteria_.get(index);  } else {
            return globCriteriaBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> 
             getGlobCriteriaOrBuilderList() {
          if (globCriteriaBuilder_ != null) {
            return globCriteriaBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(globCriteria_);
          }
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder addGlobCriteriaBuilder() {
          return getGlobCriteriaFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder addGlobCriteriaBuilder(
            int index) {
          return getGlobCriteriaFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.GlobCriteria glob_criteria = 12;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder> 
             getGlobCriteriaBuilderList() {
          return getGlobCriteriaFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> 
            getGlobCriteriaFieldBuilder() {
          if (globCriteriaBuilder_ == null) {
            globCriteriaBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder>(
                    globCriteria_,
                    ((bitField0_ & 0x00001000) == 0x00001000),
                    getParentForChildren(),
                    isClean());
            globCriteria_ = null;
          }
          return globCriteriaBuilder_;
        }

        private java.util.List<java.lang.Integer> intListValue_ = java.util.Collections.emptyList();
        private void ensureIntListValueIsMutable() {
          if (!((bitField0_ & 0x00002000) == 0x00002000)) {
            intListValue_ = new java.util.ArrayList<java.lang.Integer>(intListValue_);
            bitField0_ |= 0x00002000;
           }
        }
        /**
         * <code>repeated int32 int_list_value = 13;</code>
         */
        public java.util.List<java.lang.Integer>
            getIntListValueList() {
          return java.util.Collections.unmodifiableList(intListValue_);
        }
        /**
         * <code>repeated int32 int_list_value = 13;</code>
         */
        public int getIntListValueCount() {
          return intListValue_.size();
        }
        /**
         * <code>repeated int32 int_list_value = 13;</code>
         */
        public int getIntListValue(int index) {
          return intListValue_.get(index);
        }
        /**
         * <code>repeated int32 int_list_value = 13;</code>
         */
        public Builder setIntListValue(
            int index, int value) {
          ensureIntListValueIsMutable();
          intListValue_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 int_list_value = 13;</code>
         */
        public Builder addIntListValue(int value) {
          ensureIntListValueIsMutable();
          intListValue_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 int_list_value = 13;</code>
         */
        public Builder addAllIntListValue(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureIntListValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, intListValue_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 int_list_value = 13;</code>
         */
        public Builder clearIntListValue() {
          intListValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
          return this;
        }

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> stringDictUnaryValue_ =
          java.util.Collections.emptyList();
        private void ensureStringDictUnaryValueIsMutable() {
          if (!((bitField0_ & 0x00004000) == 0x00004000)) {
            stringDictUnaryValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry>(stringDictUnaryValue_);
            bitField0_ |= 0x00004000;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> stringDictUnaryValueBuilder_;

        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> getStringDictUnaryValueList() {
          if (stringDictUnaryValueBuilder_ == null) {
            return java.util.Collections.unmodifiableList(stringDictUnaryValue_);
          } else {
            return stringDictUnaryValueBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public int getStringDictUnaryValueCount() {
          if (stringDictUnaryValueBuilder_ == null) {
            return stringDictUnaryValue_.size();
          } else {
            return stringDictUnaryValueBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getStringDictUnaryValue(int index) {
          if (stringDictUnaryValueBuilder_ == null) {
            return stringDictUnaryValue_.get(index);
          } else {
            return stringDictUnaryValueBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder setStringDictUnaryValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry value) {
          if (stringDictUnaryValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringDictUnaryValueIsMutable();
            stringDictUnaryValue_.set(index, value);
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder setStringDictUnaryValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder builderForValue) {
          if (stringDictUnaryValueBuilder_ == null) {
            ensureStringDictUnaryValueIsMutable();
            stringDictUnaryValue_.set(index, builderForValue.build());
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder addStringDictUnaryValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry value) {
          if (stringDictUnaryValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringDictUnaryValueIsMutable();
            stringDictUnaryValue_.add(value);
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder addStringDictUnaryValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry value) {
          if (stringDictUnaryValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStringDictUnaryValueIsMutable();
            stringDictUnaryValue_.add(index, value);
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder addStringDictUnaryValue(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder builderForValue) {
          if (stringDictUnaryValueBuilder_ == null) {
            ensureStringDictUnaryValueIsMutable();
            stringDictUnaryValue_.add(builderForValue.build());
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder addStringDictUnaryValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder builderForValue) {
          if (stringDictUnaryValueBuilder_ == null) {
            ensureStringDictUnaryValueIsMutable();
            stringDictUnaryValue_.add(index, builderForValue.build());
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder addAllStringDictUnaryValue(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> values) {
          if (stringDictUnaryValueBuilder_ == null) {
            ensureStringDictUnaryValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, stringDictUnaryValue_);
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder clearStringDictUnaryValue() {
          if (stringDictUnaryValueBuilder_ == null) {
            stringDictUnaryValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00004000);
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public Builder removeStringDictUnaryValue(int index) {
          if (stringDictUnaryValueBuilder_ == null) {
            ensureStringDictUnaryValueIsMutable();
            stringDictUnaryValue_.remove(index);
            onChanged();
          } else {
            stringDictUnaryValueBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder getStringDictUnaryValueBuilder(
            int index) {
          return getStringDictUnaryValueFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder getStringDictUnaryValueOrBuilder(
            int index) {
          if (stringDictUnaryValueBuilder_ == null) {
            return stringDictUnaryValue_.get(index);  } else {
            return stringDictUnaryValueBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> 
             getStringDictUnaryValueOrBuilderList() {
          if (stringDictUnaryValueBuilder_ != null) {
            return stringDictUnaryValueBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(stringDictUnaryValue_);
          }
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder addStringDictUnaryValueBuilder() {
          return getStringDictUnaryValueFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder addStringDictUnaryValueBuilder(
            int index) {
          return getStringDictUnaryValueFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 14;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder> 
             getStringDictUnaryValueBuilderList() {
          return getStringDictUnaryValueFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> 
            getStringDictUnaryValueFieldBuilder() {
          if (stringDictUnaryValueBuilder_ == null) {
            stringDictUnaryValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder>(
                    stringDictUnaryValue_,
                    ((bitField0_ & 0x00004000) == 0x00004000),
                    getParentForChildren(),
                    isClean());
            stringDictUnaryValue_ = null;
          }
          return stringDictUnaryValueBuilder_;
        }

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> labelDictUnaryValue_ =
          java.util.Collections.emptyList();
        private void ensureLabelDictUnaryValueIsMutable() {
          if (!((bitField0_ & 0x00008000) == 0x00008000)) {
            labelDictUnaryValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry>(labelDictUnaryValue_);
            bitField0_ |= 0x00008000;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> labelDictUnaryValueBuilder_;

        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> getLabelDictUnaryValueList() {
          if (labelDictUnaryValueBuilder_ == null) {
            return java.util.Collections.unmodifiableList(labelDictUnaryValue_);
          } else {
            return labelDictUnaryValueBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public int getLabelDictUnaryValueCount() {
          if (labelDictUnaryValueBuilder_ == null) {
            return labelDictUnaryValue_.size();
          } else {
            return labelDictUnaryValueBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getLabelDictUnaryValue(int index) {
          if (labelDictUnaryValueBuilder_ == null) {
            return labelDictUnaryValue_.get(index);
          } else {
            return labelDictUnaryValueBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder setLabelDictUnaryValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry value) {
          if (labelDictUnaryValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLabelDictUnaryValueIsMutable();
            labelDictUnaryValue_.set(index, value);
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder setLabelDictUnaryValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder builderForValue) {
          if (labelDictUnaryValueBuilder_ == null) {
            ensureLabelDictUnaryValueIsMutable();
            labelDictUnaryValue_.set(index, builderForValue.build());
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder addLabelDictUnaryValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry value) {
          if (labelDictUnaryValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLabelDictUnaryValueIsMutable();
            labelDictUnaryValue_.add(value);
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder addLabelDictUnaryValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry value) {
          if (labelDictUnaryValueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureLabelDictUnaryValueIsMutable();
            labelDictUnaryValue_.add(index, value);
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder addLabelDictUnaryValue(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder builderForValue) {
          if (labelDictUnaryValueBuilder_ == null) {
            ensureLabelDictUnaryValueIsMutable();
            labelDictUnaryValue_.add(builderForValue.build());
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder addLabelDictUnaryValue(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder builderForValue) {
          if (labelDictUnaryValueBuilder_ == null) {
            ensureLabelDictUnaryValueIsMutable();
            labelDictUnaryValue_.add(index, builderForValue.build());
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder addAllLabelDictUnaryValue(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> values) {
          if (labelDictUnaryValueBuilder_ == null) {
            ensureLabelDictUnaryValueIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, labelDictUnaryValue_);
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder clearLabelDictUnaryValue() {
          if (labelDictUnaryValueBuilder_ == null) {
            labelDictUnaryValue_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00008000);
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public Builder removeLabelDictUnaryValue(int index) {
          if (labelDictUnaryValueBuilder_ == null) {
            ensureLabelDictUnaryValueIsMutable();
            labelDictUnaryValue_.remove(index);
            onChanged();
          } else {
            labelDictUnaryValueBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder getLabelDictUnaryValueBuilder(
            int index) {
          return getLabelDictUnaryValueFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder getLabelDictUnaryValueOrBuilder(
            int index) {
          if (labelDictUnaryValueBuilder_ == null) {
            return labelDictUnaryValue_.get(index);  } else {
            return labelDictUnaryValueBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> 
             getLabelDictUnaryValueOrBuilderList() {
          if (labelDictUnaryValueBuilder_ != null) {
            return labelDictUnaryValueBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(labelDictUnaryValue_);
          }
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder addLabelDictUnaryValueBuilder() {
          return getLabelDictUnaryValueFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder addLabelDictUnaryValueBuilder(
            int index) {
          return getLabelDictUnaryValueFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 15;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder> 
             getLabelDictUnaryValueBuilderList() {
          return getLabelDictUnaryValueFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> 
            getLabelDictUnaryValueFieldBuilder() {
          if (labelDictUnaryValueBuilder_ == null) {
            labelDictUnaryValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder>(
                    labelDictUnaryValue_,
                    ((bitField0_ & 0x00008000) == 0x00008000),
                    getParentForChildren(),
                    isClean());
            labelDictUnaryValue_ = null;
          }
          return labelDictUnaryValueBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:blaze_query.Attribute.SelectorEntry)
      }

      // @@protoc_insertion_point(class_scope:blaze_query.Attribute.SelectorEntry)
      private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry();
      }

      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface SelectorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:blaze_query.Attribute.Selector)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry> 
          getEntriesList();
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry getEntries(int index);
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      int getEntriesCount();
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder> 
          getEntriesOrBuilderList();
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder getEntriesOrBuilder(
          int index);

      /**
       * <pre>
       * Whether or not this has any default values.
       * </pre>
       *
       * <code>optional bool has_default_value = 2;</code>
       */
      boolean hasHasDefaultValue();
      /**
       * <pre>
       * Whether or not this has any default values.
       * </pre>
       *
       * <code>optional bool has_default_value = 2;</code>
       */
      boolean getHasDefaultValue();

      /**
       * <pre>
       * The error message when no condition matches.
       * </pre>
       *
       * <code>optional string no_match_error = 3;</code>
       */
      boolean hasNoMatchError();
      /**
       * <pre>
       * The error message when no condition matches.
       * </pre>
       *
       * <code>optional string no_match_error = 3;</code>
       */
      java.lang.String getNoMatchError();
      /**
       * <pre>
       * The error message when no condition matches.
       * </pre>
       *
       * <code>optional string no_match_error = 3;</code>
       */
      com.google.protobuf.ByteString
          getNoMatchErrorBytes();
    }
    /**
     * Protobuf type {@code blaze_query.Attribute.Selector}
     */
    public  static final class Selector extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:blaze_query.Attribute.Selector)
        SelectorOrBuilder {
      // Use Selector.newBuilder() to construct.
      private Selector(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Selector() {
        entries_ = java.util.Collections.emptyList();
        hasDefaultValue_ = false;
        noMatchError_ = "";
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Selector(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  entries_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry>();
                  mutable_bitField0_ |= 0x00000001;
                }
                entries_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.PARSER, extensionRegistry));
                break;
              }
              case 16: {
                bitField0_ |= 0x00000001;
                hasDefaultValue_ = input.readBool();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                noMatchError_ = bs;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
            entries_ = java.util.Collections.unmodifiableList(entries_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_Selector_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_Selector_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder.class);
      }

      private int bitField0_;
      public static final int ENTRIES_FIELD_NUMBER = 1;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry> entries_;
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry> getEntriesList() {
        return entries_;
      }
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder> 
          getEntriesOrBuilderList() {
        return entries_;
      }
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      public int getEntriesCount() {
        return entries_.size();
      }
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry getEntries(int index) {
        return entries_.get(index);
      }
      /**
       * <pre>
       * The list of (label, value) pairs in the map that defines the selector.
       * At this time, this cannot be empty, i.e. a selector has at least one
       * entry.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder getEntriesOrBuilder(
          int index) {
        return entries_.get(index);
      }

      public static final int HAS_DEFAULT_VALUE_FIELD_NUMBER = 2;
      private boolean hasDefaultValue_;
      /**
       * <pre>
       * Whether or not this has any default values.
       * </pre>
       *
       * <code>optional bool has_default_value = 2;</code>
       */
      public boolean hasHasDefaultValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Whether or not this has any default values.
       * </pre>
       *
       * <code>optional bool has_default_value = 2;</code>
       */
      public boolean getHasDefaultValue() {
        return hasDefaultValue_;
      }

      public static final int NO_MATCH_ERROR_FIELD_NUMBER = 3;
      private volatile java.lang.Object noMatchError_;
      /**
       * <pre>
       * The error message when no condition matches.
       * </pre>
       *
       * <code>optional string no_match_error = 3;</code>
       */
      public boolean hasNoMatchError() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * The error message when no condition matches.
       * </pre>
       *
       * <code>optional string no_match_error = 3;</code>
       */
      public java.lang.String getNoMatchError() {
        java.lang.Object ref = noMatchError_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            noMatchError_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       * The error message when no condition matches.
       * </pre>
       *
       * <code>optional string no_match_error = 3;</code>
       */
      public com.google.protobuf.ByteString
          getNoMatchErrorBytes() {
        java.lang.Object ref = noMatchError_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          noMatchError_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

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

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

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < entries_.size(); i++) {
          output.writeMessage(1, entries_.get(i));
        }
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBool(2, hasDefaultValue_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, noMatchError_);
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        for (int i = 0; i < entries_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, entries_.get(i));
        }
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, hasDefaultValue_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, noMatchError_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector)) {
          return super.equals(obj);
        }
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector) obj;

        boolean result = true;
        result = result && getEntriesList()
            .equals(other.getEntriesList());
        result = result && (hasHasDefaultValue() == other.hasHasDefaultValue());
        if (hasHasDefaultValue()) {
          result = result && (getHasDefaultValue()
              == other.getHasDefaultValue());
        }
        result = result && (hasNoMatchError() == other.hasNoMatchError());
        if (hasNoMatchError()) {
          result = result && getNoMatchError()
              .equals(other.getNoMatchError());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (getEntriesCount() > 0) {
          hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
          hash = (53 * hash) + getEntriesList().hashCode();
        }
        if (hasHasDefaultValue()) {
          hash = (37 * hash) + HAS_DEFAULT_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getHasDefaultValue());
        }
        if (hasNoMatchError()) {
          hash = (37 * hash) + NO_MATCH_ERROR_FIELD_NUMBER;
          hash = (53 * hash) + getNoMatchError().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code blaze_query.Attribute.Selector}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:blaze_query.Attribute.Selector)
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_Selector_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_Selector_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getEntriesFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (entriesBuilder_ == null) {
            entries_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            entriesBuilder_.clear();
          }
          hasDefaultValue_ = false;
          bitField0_ = (bitField0_ & ~0x00000002);
          noMatchError_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_Selector_descriptor;
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector getDefaultInstanceForType() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.getDefaultInstance();
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector build() {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector buildPartial() {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (entriesBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              entries_ = java.util.Collections.unmodifiableList(entries_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.entries_ = entries_;
          } else {
            result.entries_ = entriesBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000001;
          }
          result.hasDefaultValue_ = hasDefaultValue_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000002;
          }
          result.noMatchError_ = noMatchError_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector) {
            return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector other) {
          if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.getDefaultInstance()) return this;
          if (entriesBuilder_ == null) {
            if (!other.entries_.isEmpty()) {
              if (entries_.isEmpty()) {
                entries_ = other.entries_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureEntriesIsMutable();
                entries_.addAll(other.entries_);
              }
              onChanged();
            }
          } else {
            if (!other.entries_.isEmpty()) {
              if (entriesBuilder_.isEmpty()) {
                entriesBuilder_.dispose();
                entriesBuilder_ = null;
                entries_ = other.entries_;
                bitField0_ = (bitField0_ & ~0x00000001);
                entriesBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getEntriesFieldBuilder() : null;
              } else {
                entriesBuilder_.addAllMessages(other.entries_);
              }
            }
          }
          if (other.hasHasDefaultValue()) {
            setHasDefaultValue(other.getHasDefaultValue());
          }
          if (other.hasNoMatchError()) {
            bitField0_ |= 0x00000004;
            noMatchError_ = other.noMatchError_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

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

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry> entries_ =
          java.util.Collections.emptyList();
        private void ensureEntriesIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            entries_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry>(entries_);
            bitField0_ |= 0x00000001;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder> entriesBuilder_;

        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry> getEntriesList() {
          if (entriesBuilder_ == null) {
            return java.util.Collections.unmodifiableList(entries_);
          } else {
            return entriesBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public int getEntriesCount() {
          if (entriesBuilder_ == null) {
            return entries_.size();
          } else {
            return entriesBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry getEntries(int index) {
          if (entriesBuilder_ == null) {
            return entries_.get(index);
          } else {
            return entriesBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder setEntries(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry value) {
          if (entriesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEntriesIsMutable();
            entries_.set(index, value);
            onChanged();
          } else {
            entriesBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder setEntries(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder builderForValue) {
          if (entriesBuilder_ == null) {
            ensureEntriesIsMutable();
            entries_.set(index, builderForValue.build());
            onChanged();
          } else {
            entriesBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder addEntries(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry value) {
          if (entriesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEntriesIsMutable();
            entries_.add(value);
            onChanged();
          } else {
            entriesBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder addEntries(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry value) {
          if (entriesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEntriesIsMutable();
            entries_.add(index, value);
            onChanged();
          } else {
            entriesBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder addEntries(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder builderForValue) {
          if (entriesBuilder_ == null) {
            ensureEntriesIsMutable();
            entries_.add(builderForValue.build());
            onChanged();
          } else {
            entriesBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder addEntries(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder builderForValue) {
          if (entriesBuilder_ == null) {
            ensureEntriesIsMutable();
            entries_.add(index, builderForValue.build());
            onChanged();
          } else {
            entriesBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder addAllEntries(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry> values) {
          if (entriesBuilder_ == null) {
            ensureEntriesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, entries_);
            onChanged();
          } else {
            entriesBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder clearEntries() {
          if (entriesBuilder_ == null) {
            entries_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            entriesBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public Builder removeEntries(int index) {
          if (entriesBuilder_ == null) {
            ensureEntriesIsMutable();
            entries_.remove(index);
            onChanged();
          } else {
            entriesBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder getEntriesBuilder(
            int index) {
          return getEntriesFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder getEntriesOrBuilder(
            int index) {
          if (entriesBuilder_ == null) {
            return entries_.get(index);  } else {
            return entriesBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder> 
             getEntriesOrBuilderList() {
          if (entriesBuilder_ != null) {
            return entriesBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(entries_);
          }
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder addEntriesBuilder() {
          return getEntriesFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.getDefaultInstance());
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder addEntriesBuilder(
            int index) {
          return getEntriesFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.getDefaultInstance());
        }
        /**
         * <pre>
         * The list of (label, value) pairs in the map that defines the selector.
         * At this time, this cannot be empty, i.e. a selector has at least one
         * entry.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.SelectorEntry entries = 1;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder> 
             getEntriesBuilderList() {
          return getEntriesFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder> 
            getEntriesFieldBuilder() {
          if (entriesBuilder_ == null) {
            entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorEntryOrBuilder>(
                    entries_,
                    ((bitField0_ & 0x00000001) == 0x00000001),
                    getParentForChildren(),
                    isClean());
            entries_ = null;
          }
          return entriesBuilder_;
        }

        private boolean hasDefaultValue_ ;
        /**
         * <pre>
         * Whether or not this has any default values.
         * </pre>
         *
         * <code>optional bool has_default_value = 2;</code>
         */
        public boolean hasHasDefaultValue() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <pre>
         * Whether or not this has any default values.
         * </pre>
         *
         * <code>optional bool has_default_value = 2;</code>
         */
        public boolean getHasDefaultValue() {
          return hasDefaultValue_;
        }
        /**
         * <pre>
         * Whether or not this has any default values.
         * </pre>
         *
         * <code>optional bool has_default_value = 2;</code>
         */
        public Builder setHasDefaultValue(boolean value) {
          bitField0_ |= 0x00000002;
          hasDefaultValue_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Whether or not this has any default values.
         * </pre>
         *
         * <code>optional bool has_default_value = 2;</code>
         */
        public Builder clearHasDefaultValue() {
          bitField0_ = (bitField0_ & ~0x00000002);
          hasDefaultValue_ = false;
          onChanged();
          return this;
        }

        private java.lang.Object noMatchError_ = "";
        /**
         * <pre>
         * The error message when no condition matches.
         * </pre>
         *
         * <code>optional string no_match_error = 3;</code>
         */
        public boolean hasNoMatchError() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <pre>
         * The error message when no condition matches.
         * </pre>
         *
         * <code>optional string no_match_error = 3;</code>
         */
        public java.lang.String getNoMatchError() {
          java.lang.Object ref = noMatchError_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              noMatchError_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The error message when no condition matches.
         * </pre>
         *
         * <code>optional string no_match_error = 3;</code>
         */
        public com.google.protobuf.ByteString
            getNoMatchErrorBytes() {
          java.lang.Object ref = noMatchError_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            noMatchError_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The error message when no condition matches.
         * </pre>
         *
         * <code>optional string no_match_error = 3;</code>
         */
        public Builder setNoMatchError(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          noMatchError_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The error message when no condition matches.
         * </pre>
         *
         * <code>optional string no_match_error = 3;</code>
         */
        public Builder clearNoMatchError() {
          bitField0_ = (bitField0_ & ~0x00000004);
          noMatchError_ = getDefaultInstance().getNoMatchError();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The error message when no condition matches.
         * </pre>
         *
         * <code>optional string no_match_error = 3;</code>
         */
        public Builder setNoMatchErrorBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
          noMatchError_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:blaze_query.Attribute.Selector)
      }

      // @@protoc_insertion_point(class_scope:blaze_query.Attribute.Selector)
      private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector();
      }

      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface SelectorListOrBuilder extends
        // @@protoc_insertion_point(interface_extends:blaze_query.Attribute.SelectorList)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * The type that this selector list evaluates to, and the type that each
       * selector in the list evaluates to. At this time, this cannot be
       * SELECTOR_LIST, i.e. selector lists do not nest.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.Discriminator type = 1;</code>
       */
      boolean hasType();
      /**
       * <pre>
       * The type that this selector list evaluates to, and the type that each
       * selector in the list evaluates to. At this time, this cannot be
       * SELECTOR_LIST, i.e. selector lists do not nest.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.Discriminator type = 1;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType();

      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector> 
          getElementsList();
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector getElements(int index);
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      int getElementsCount();
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder> 
          getElementsOrBuilderList();
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder getElementsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code blaze_query.Attribute.SelectorList}
     */
    public  static final class SelectorList extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:blaze_query.Attribute.SelectorList)
        SelectorListOrBuilder {
      // Use SelectorList.newBuilder() to construct.
      private SelectorList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SelectorList() {
        type_ = 1;
        elements_ = java.util.Collections.emptyList();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SelectorList(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator value = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  type_ = rawValue;
                }
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  elements_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector>();
                  mutable_bitField0_ |= 0x00000002;
                }
                elements_.add(
                    input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.PARSER, extensionRegistry));
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            elements_ = java.util.Collections.unmodifiableList(elements_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorList_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.Builder.class);
      }

      private int bitField0_;
      public static final int TYPE_FIELD_NUMBER = 1;
      private int type_;
      /**
       * <pre>
       * The type that this selector list evaluates to, and the type that each
       * selector in the list evaluates to. At this time, this cannot be
       * SELECTOR_LIST, i.e. selector lists do not nest.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.Discriminator type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The type that this selector list evaluates to, and the type that each
       * selector in the list evaluates to. At this time, this cannot be
       * SELECTOR_LIST, i.e. selector lists do not nest.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.Discriminator type = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(type_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.INTEGER : result;
      }

      public static final int ELEMENTS_FIELD_NUMBER = 2;
      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector> elements_;
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector> getElementsList() {
        return elements_;
      }
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder> 
          getElementsOrBuilderList() {
        return elements_;
      }
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      public int getElementsCount() {
        return elements_.size();
      }
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector getElements(int index) {
        return elements_.get(index);
      }
      /**
       * <pre>
       * The list of selector elements in this selector list. At this time, this
       * cannot be empty, i.e. a selector list is never empty.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder getElementsOrBuilder(
          int index) {
        return elements_.get(index);
      }

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

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

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, type_);
        }
        for (int i = 0; i < elements_.size(); i++) {
          output.writeMessage(2, elements_.get(i));
        }
        unknownFields.writeTo(output);
      }

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

        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, type_);
        }
        for (int i = 0; i < elements_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, elements_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList)) {
          return super.equals(obj);
        }
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList) obj;

        boolean result = true;
        result = result && (hasType() == other.hasType());
        if (hasType()) {
          result = result && type_ == other.type_;
        }
        result = result && getElementsList()
            .equals(other.getElementsList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasType()) {
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + type_;
        }
        if (getElementsCount() > 0) {
          hash = (37 * hash) + ELEMENTS_FIELD_NUMBER;
          hash = (53 * hash) + getElementsList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code blaze_query.Attribute.SelectorList}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:blaze_query.Attribute.SelectorList)
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorListOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorList_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorList_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getElementsFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          type_ = 1;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (elementsBuilder_ == null) {
            elements_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            elementsBuilder_.clear();
          }
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_SelectorList_descriptor;
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList getDefaultInstanceForType() {
          return com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.getDefaultInstance();
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList build() {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList buildPartial() {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.type_ = type_;
          if (elementsBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              elements_ = java.util.Collections.unmodifiableList(elements_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.elements_ = elements_;
          } else {
            result.elements_ = elementsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList) {
            return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList other) {
          if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.getDefaultInstance()) return this;
          if (other.hasType()) {
            setType(other.getType());
          }
          if (elementsBuilder_ == null) {
            if (!other.elements_.isEmpty()) {
              if (elements_.isEmpty()) {
                elements_ = other.elements_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureElementsIsMutable();
                elements_.addAll(other.elements_);
              }
              onChanged();
            }
          } else {
            if (!other.elements_.isEmpty()) {
              if (elementsBuilder_.isEmpty()) {
                elementsBuilder_.dispose();
                elementsBuilder_ = null;
                elements_ = other.elements_;
                bitField0_ = (bitField0_ & ~0x00000002);
                elementsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getElementsFieldBuilder() : null;
              } else {
                elementsBuilder_.addAllMessages(other.elements_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

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

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private int type_ = 1;
        /**
         * <pre>
         * The type that this selector list evaluates to, and the type that each
         * selector in the list evaluates to. At this time, this cannot be
         * SELECTOR_LIST, i.e. selector lists do not nest.
         * </pre>
         *
         * <code>optional .blaze_query.Attribute.Discriminator type = 1;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <pre>
         * The type that this selector list evaluates to, and the type that each
         * selector in the list evaluates to. At this time, this cannot be
         * SELECTOR_LIST, i.e. selector lists do not nest.
         * </pre>
         *
         * <code>optional .blaze_query.Attribute.Discriminator type = 1;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType() {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(type_);
          return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.INTEGER : result;
        }
        /**
         * <pre>
         * The type that this selector list evaluates to, and the type that each
         * selector in the list evaluates to. At this time, this cannot be
         * SELECTOR_LIST, i.e. selector lists do not nest.
         * </pre>
         *
         * <code>optional .blaze_query.Attribute.Discriminator type = 1;</code>
         */
        public Builder setType(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The type that this selector list evaluates to, and the type that each
         * selector in the list evaluates to. At this time, this cannot be
         * SELECTOR_LIST, i.e. selector lists do not nest.
         * </pre>
         *
         * <code>optional .blaze_query.Attribute.Discriminator type = 1;</code>
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = 1;
          onChanged();
          return this;
        }

        private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector> elements_ =
          java.util.Collections.emptyList();
        private void ensureElementsIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            elements_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector>(elements_);
            bitField0_ |= 0x00000002;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder> elementsBuilder_;

        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector> getElementsList() {
          if (elementsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(elements_);
          } else {
            return elementsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public int getElementsCount() {
          if (elementsBuilder_ == null) {
            return elements_.size();
          } else {
            return elementsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector getElements(int index) {
          if (elementsBuilder_ == null) {
            return elements_.get(index);
          } else {
            return elementsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder setElements(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector value) {
          if (elementsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureElementsIsMutable();
            elements_.set(index, value);
            onChanged();
          } else {
            elementsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder setElements(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder builderForValue) {
          if (elementsBuilder_ == null) {
            ensureElementsIsMutable();
            elements_.set(index, builderForValue.build());
            onChanged();
          } else {
            elementsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder addElements(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector value) {
          if (elementsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureElementsIsMutable();
            elements_.add(value);
            onChanged();
          } else {
            elementsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder addElements(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector value) {
          if (elementsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureElementsIsMutable();
            elements_.add(index, value);
            onChanged();
          } else {
            elementsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder addElements(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder builderForValue) {
          if (elementsBuilder_ == null) {
            ensureElementsIsMutable();
            elements_.add(builderForValue.build());
            onChanged();
          } else {
            elementsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder addElements(
            int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder builderForValue) {
          if (elementsBuilder_ == null) {
            ensureElementsIsMutable();
            elements_.add(index, builderForValue.build());
            onChanged();
          } else {
            elementsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder addAllElements(
            java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector> values) {
          if (elementsBuilder_ == null) {
            ensureElementsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, elements_);
            onChanged();
          } else {
            elementsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder clearElements() {
          if (elementsBuilder_ == null) {
            elements_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            elementsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public Builder removeElements(int index) {
          if (elementsBuilder_ == null) {
            ensureElementsIsMutable();
            elements_.remove(index);
            onChanged();
          } else {
            elementsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder getElementsBuilder(
            int index) {
          return getElementsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder getElementsOrBuilder(
            int index) {
          if (elementsBuilder_ == null) {
            return elements_.get(index);  } else {
            return elementsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder> 
             getElementsOrBuilderList() {
          if (elementsBuilder_ != null) {
            return elementsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(elements_);
          }
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder addElementsBuilder() {
          return getElementsFieldBuilder().addBuilder(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.getDefaultInstance());
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder addElementsBuilder(
            int index) {
          return getElementsFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.getDefaultInstance());
        }
        /**
         * <pre>
         * The list of selector elements in this selector list. At this time, this
         * cannot be empty, i.e. a selector list is never empty.
         * </pre>
         *
         * <code>repeated .blaze_query.Attribute.Selector elements = 2;</code>
         */
        public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder> 
             getElementsBuilderList() {
          return getElementsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder> 
            getElementsFieldBuilder() {
          if (elementsBuilder_ == null) {
            elementsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Selector.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorOrBuilder>(
                    elements_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            elements_ = null;
          }
          return elementsBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:blaze_query.Attribute.SelectorList)
      }

      // @@protoc_insertion_point(class_scope:blaze_query.Attribute.SelectorList)
      private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList();
      }

      public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * The name of the attribute
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The name of the attribute
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the attribute
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEPRECATED_PARSEABLE_LOCATION_FIELD_NUMBER = 12;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDParseableLocation_;
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
     */
    public boolean hasDEPRECATEDParseableLocation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation() {
      return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
    }
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder() {
      return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
    }

    public static final int EXPLICITLY_SPECIFIED_FIELD_NUMBER = 13;
    private boolean explicitlySpecified_;
    /**
     * <pre>
     * Whether the attribute was explicitly specified
     * </pre>
     *
     * <code>optional bool explicitly_specified = 13;</code>
     */
    public boolean hasExplicitlySpecified() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * Whether the attribute was explicitly specified
     * </pre>
     *
     * <code>optional bool explicitly_specified = 13;</code>
     */
    public boolean getExplicitlySpecified() {
      return explicitlySpecified_;
    }

    public static final int NODEP_FIELD_NUMBER = 20;
    private boolean nodep_;
    /**
     * <pre>
     * If this attribute has a string value or a string list value, then this
     * may be set to indicate that the value may be treated as a label that
     * isn't a dependency of this attribute's rule.
     * </pre>
     *
     * <code>optional bool nodep = 20;</code>
     */
    public boolean hasNodep() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * If this attribute has a string value or a string list value, then this
     * may be set to indicate that the value may be treated as a label that
     * isn't a dependency of this attribute's rule.
     * </pre>
     *
     * <code>optional bool nodep = 20;</code>
     */
    public boolean getNodep() {
      return nodep_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_;
    /**
     * <pre>
     * The type of attribute.  This message is used for all of the different
     * attribute types so the discriminator helps for figuring out what is
     * stored in the message.
     * </pre>
     *
     * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <pre>
     * The type of attribute.  This message is used for all of the different
     * attribute types so the discriminator helps for figuring out what is
     * stored in the message.
     * </pre>
     *
     * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType() {
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(type_);
      return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.INTEGER : result;
    }

    public static final int INT_VALUE_FIELD_NUMBER = 3;
    private int intValue_;
    /**
     * <pre>
     * If this attribute has an integer value this will be populated.
     * Boolean and TriState also use this field as [0,1] and [-1,0,1]
     * for [false, true] and [auto, no, yes] respectively.
     * </pre>
     *
     * <code>optional int32 int_value = 3;</code>
     */
    public boolean hasIntValue() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <pre>
     * If this attribute has an integer value this will be populated.
     * Boolean and TriState also use this field as [0,1] and [-1,0,1]
     * for [false, true] and [auto, no, yes] respectively.
     * </pre>
     *
     * <code>optional int32 int_value = 3;</code>
     */
    public int getIntValue() {
      return intValue_;
    }

    public static final int STRING_VALUE_FIELD_NUMBER = 5;
    private volatile java.lang.Object stringValue_;
    /**
     * <pre>
     * If the attribute has a string value this will be populated.  Label and
     * path attributes use this field as the value even though the type may
     * be LABEL or something else other than STRING.
     * </pre>
     *
     * <code>optional string string_value = 5;</code>
     */
    public boolean hasStringValue() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <pre>
     * If the attribute has a string value this will be populated.  Label and
     * path attributes use this field as the value even though the type may
     * be LABEL or something else other than STRING.
     * </pre>
     *
     * <code>optional string string_value = 5;</code>
     */
    public java.lang.String getStringValue() {
      java.lang.Object ref = stringValue_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          stringValue_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * If the attribute has a string value this will be populated.  Label and
     * path attributes use this field as the value even though the type may
     * be LABEL or something else other than STRING.
     * </pre>
     *
     * <code>optional string string_value = 5;</code>
     */
    public com.google.protobuf.ByteString
        getStringValueBytes() {
      java.lang.Object ref = stringValue_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stringValue_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BOOLEAN_VALUE_FIELD_NUMBER = 14;
    private boolean booleanValue_;
    /**
     * <pre>
     * If the attribute has a boolean value this will be populated.
     * </pre>
     *
     * <code>optional bool boolean_value = 14;</code>
     */
    public boolean hasBooleanValue() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <pre>
     * If the attribute has a boolean value this will be populated.
     * </pre>
     *
     * <code>optional bool boolean_value = 14;</code>
     */
    public boolean getBooleanValue() {
      return booleanValue_;
    }

    public static final int TRISTATE_VALUE_FIELD_NUMBER = 15;
    private int tristateValue_;
    /**
     * <pre>
     * If the attribute is a Tristate value, this will be populated.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.Tristate tristate_value = 15;</code>
     */
    public boolean hasTristateValue() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <pre>
     * If the attribute is a Tristate value, this will be populated.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.Tristate tristate_value = 15;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate getTristateValue() {
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.valueOf(tristateValue_);
      return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.NO : result;
    }

    public static final int STRING_LIST_VALUE_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList stringListValue_;
    /**
     * <pre>
     * The value of the attribute has a list of string values (label and path
     * note from STRING applies here as well).
     * </pre>
     *
     * <code>repeated string string_list_value = 6;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getStringListValueList() {
      return stringListValue_;
    }
    /**
     * <pre>
     * The value of the attribute has a list of string values (label and path
     * note from STRING applies here as well).
     * </pre>
     *
     * <code>repeated string string_list_value = 6;</code>
     */
    public int getStringListValueCount() {
      return stringListValue_.size();
    }
    /**
     * <pre>
     * The value of the attribute has a list of string values (label and path
     * note from STRING applies here as well).
     * </pre>
     *
     * <code>repeated string string_list_value = 6;</code>
     */
    public java.lang.String getStringListValue(int index) {
      return stringListValue_.get(index);
    }
    /**
     * <pre>
     * The value of the attribute has a list of string values (label and path
     * note from STRING applies here as well).
     * </pre>
     *
     * <code>repeated string string_list_value = 6;</code>
     */
    public com.google.protobuf.ByteString
        getStringListValueBytes(int index) {
      return stringListValue_.getByteString(index);
    }

    public static final int LICENSE_FIELD_NUMBER = 7;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.License license_;
    /**
     * <pre>
     * If this is a license attribute, the license information is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 7;</code>
     */
    public boolean hasLicense() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <pre>
     * If this is a license attribute, the license information is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 7;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense() {
      return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
    }
    /**
     * <pre>
     * If this is a license attribute, the license information is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 7;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder() {
      return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
    }

    public static final int STRING_DICT_VALUE_FIELD_NUMBER = 8;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> stringDictValue_;
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> getStringDictValueList() {
      return stringDictValue_;
    }
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> 
        getStringDictValueOrBuilderList() {
      return stringDictValue_;
    }
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    public int getStringDictValueCount() {
      return stringDictValue_.size();
    }
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getStringDictValue(int index) {
      return stringDictValue_.get(index);
    }
    /**
     * <pre>
     * If this is a string dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder getStringDictValueOrBuilder(
        int index) {
      return stringDictValue_.get(index);
    }

    public static final int FILESET_LIST_VALUE_FIELD_NUMBER = 9;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> filesetListValue_;
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> getFilesetListValueList() {
      return filesetListValue_;
    }
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> 
        getFilesetListValueOrBuilderList() {
      return filesetListValue_;
    }
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    public int getFilesetListValueCount() {
      return filesetListValue_.size();
    }
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getFilesetListValue(int index) {
      return filesetListValue_.get(index);
    }
    /**
     * <pre>
     * If the attribute is part of a Fileset, the fileset entries are stored in
     * this field.
     * </pre>
     *
     * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder getFilesetListValueOrBuilder(
        int index) {
      return filesetListValue_.get(index);
    }

    public static final int LABEL_LIST_DICT_VALUE_FIELD_NUMBER = 10;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> labelListDictValue_;
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> getLabelListDictValueList() {
      return labelListDictValue_;
    }
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> 
        getLabelListDictValueOrBuilderList() {
      return labelListDictValue_;
    }
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    public int getLabelListDictValueCount() {
      return labelListDictValue_.size();
    }
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getLabelListDictValue(int index) {
      return labelListDictValue_.get(index);
    }
    /**
     * <pre>
     * If this is a label list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder getLabelListDictValueOrBuilder(
        int index) {
      return labelListDictValue_.get(index);
    }

    public static final int STRING_LIST_DICT_VALUE_FIELD_NUMBER = 11;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> stringListDictValue_;
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> getStringListDictValueList() {
      return stringListDictValue_;
    }
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> 
        getStringListDictValueOrBuilderList() {
      return stringListDictValue_;
    }
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    public int getStringListDictValueCount() {
      return stringListDictValue_.size();
    }
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getStringListDictValue(int index) {
      return stringListDictValue_.get(index);
    }
    /**
     * <pre>
     * If this is a string list dict, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder getStringListDictValueOrBuilder(
        int index) {
      return stringListDictValue_.get(index);
    }

    public static final int GLOB_CRITERIA_FIELD_NUMBER = 16;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> globCriteria_;
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> getGlobCriteriaList() {
      return globCriteria_;
    }
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> 
        getGlobCriteriaOrBuilderList() {
      return globCriteria_;
    }
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    public int getGlobCriteriaCount() {
      return globCriteria_.size();
    }
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getGlobCriteria(int index) {
      return globCriteria_.get(index);
    }
    /**
     * <pre>
     * The glob criteria. This is non-empty if:
     * 1. This attribute is a list of strings or labels, and,
     * 2. It contained a glob() expression
     * </pre>
     *
     * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder getGlobCriteriaOrBuilder(
        int index) {
      return globCriteria_.get(index);
    }

    public static final int INT_LIST_VALUE_FIELD_NUMBER = 17;
    private java.util.List<java.lang.Integer> intListValue_;
    /**
     * <pre>
     * The value of the attribute has a list of int32 values
     * </pre>
     *
     * <code>repeated int32 int_list_value = 17;</code>
     */
    public java.util.List<java.lang.Integer>
        getIntListValueList() {
      return intListValue_;
    }
    /**
     * <pre>
     * The value of the attribute has a list of int32 values
     * </pre>
     *
     * <code>repeated int32 int_list_value = 17;</code>
     */
    public int getIntListValueCount() {
      return intListValue_.size();
    }
    /**
     * <pre>
     * The value of the attribute has a list of int32 values
     * </pre>
     *
     * <code>repeated int32 int_list_value = 17;</code>
     */
    public int getIntListValue(int index) {
      return intListValue_.get(index);
    }

    public static final int STRING_DICT_UNARY_VALUE_FIELD_NUMBER = 18;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> stringDictUnaryValue_;
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> getStringDictUnaryValueList() {
      return stringDictUnaryValue_;
    }
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> 
        getStringDictUnaryValueOrBuilderList() {
      return stringDictUnaryValue_;
    }
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    public int getStringDictUnaryValueCount() {
      return stringDictUnaryValue_.size();
    }
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getStringDictUnaryValue(int index) {
      return stringDictUnaryValue_.get(index);
    }
    /**
     * <pre>
     * If this is a string dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder getStringDictUnaryValueOrBuilder(
        int index) {
      return stringDictUnaryValue_.get(index);
    }

    public static final int LABEL_DICT_UNARY_VALUE_FIELD_NUMBER = 19;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> labelDictUnaryValue_;
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> getLabelDictUnaryValueList() {
      return labelDictUnaryValue_;
    }
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> 
        getLabelDictUnaryValueOrBuilderList() {
      return labelDictUnaryValue_;
    }
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    public int getLabelDictUnaryValueCount() {
      return labelDictUnaryValue_.size();
    }
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getLabelDictUnaryValue(int index) {
      return labelDictUnaryValue_.get(index);
    }
    /**
     * <pre>
     * If this is a label dict unary, each entry will be stored here.
     * </pre>
     *
     * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder getLabelDictUnaryValueOrBuilder(
        int index) {
      return labelDictUnaryValue_.get(index);
    }

    public static final int SELECTOR_LIST_FIELD_NUMBER = 21;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList selectorList_;
    /**
     * <pre>
     * If this attribute's value is an expression containing one or more select
     * expressions, then its type is SELECTOR_LIST and a SelectorList will be
     * stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
     */
    public boolean hasSelectorList() {
      return ((bitField0_ & 0x00000400) == 0x00000400);
    }
    /**
     * <pre>
     * If this attribute's value is an expression containing one or more select
     * expressions, then its type is SELECTOR_LIST and a SelectorList will be
     * stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList getSelectorList() {
      return selectorList_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.getDefaultInstance() : selectorList_;
    }
    /**
     * <pre>
     * If this attribute's value is an expression containing one or more select
     * expressions, then its type is SELECTOR_LIST and a SelectorList will be
     * stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorListOrBuilder getSelectorListOrBuilder() {
      return selectorList_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.getDefaultInstance() : selectorList_;
    }

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

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getStringDictValueCount(); i++) {
        if (!getStringDictValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getFilesetListValueCount(); i++) {
        if (!getFilesetListValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getLabelListDictValueCount(); i++) {
        if (!getLabelListDictValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStringListDictValueCount(); i++) {
        if (!getStringListDictValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStringDictUnaryValueCount(); i++) {
        if (!getStringDictUnaryValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getLabelDictUnaryValueCount(); i++) {
        if (!getLabelDictUnaryValue(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSelectorList()) {
        if (!getSelectorList().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeEnum(2, type_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(3, intValue_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, stringValue_);
      }
      for (int i = 0; i < stringListValue_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, stringListValue_.getRaw(i));
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeMessage(7, getLicense());
      }
      for (int i = 0; i < stringDictValue_.size(); i++) {
        output.writeMessage(8, stringDictValue_.get(i));
      }
      for (int i = 0; i < filesetListValue_.size(); i++) {
        output.writeMessage(9, filesetListValue_.get(i));
      }
      for (int i = 0; i < labelListDictValue_.size(); i++) {
        output.writeMessage(10, labelListDictValue_.get(i));
      }
      for (int i = 0; i < stringListDictValue_.size(); i++) {
        output.writeMessage(11, stringListDictValue_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(12, getDEPRECATEDParseableLocation());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(13, explicitlySpecified_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBool(14, booleanValue_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeEnum(15, tristateValue_);
      }
      for (int i = 0; i < globCriteria_.size(); i++) {
        output.writeMessage(16, globCriteria_.get(i));
      }
      for (int i = 0; i < intListValue_.size(); i++) {
        output.writeInt32(17, intListValue_.get(i));
      }
      for (int i = 0; i < stringDictUnaryValue_.size(); i++) {
        output.writeMessage(18, stringDictUnaryValue_.get(i));
      }
      for (int i = 0; i < labelDictUnaryValue_.size(); i++) {
        output.writeMessage(19, labelDictUnaryValue_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeBool(20, nodep_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeMessage(21, getSelectorList());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, type_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, intValue_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, stringValue_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < stringListValue_.size(); i++) {
          dataSize += computeStringSizeNoTag(stringListValue_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getStringListValueList().size();
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getLicense());
      }
      for (int i = 0; i < stringDictValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, stringDictValue_.get(i));
      }
      for (int i = 0; i < filesetListValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, filesetListValue_.get(i));
      }
      for (int i = 0; i < labelListDictValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, labelListDictValue_.get(i));
      }
      for (int i = 0; i < stringListDictValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, stringListDictValue_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getDEPRECATEDParseableLocation());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, explicitlySpecified_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(14, booleanValue_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(15, tristateValue_);
      }
      for (int i = 0; i < globCriteria_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, globCriteria_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < intListValue_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(intListValue_.get(i));
        }
        size += dataSize;
        size += 2 * getIntListValueList().size();
      }
      for (int i = 0; i < stringDictUnaryValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, stringDictUnaryValue_.get(i));
      }
      for (int i = 0; i < labelDictUnaryValue_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, labelDictUnaryValue_.get(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(20, nodep_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(21, getSelectorList());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute) obj;

      boolean result = true;
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && (hasDEPRECATEDParseableLocation() == other.hasDEPRECATEDParseableLocation());
      if (hasDEPRECATEDParseableLocation()) {
        result = result && getDEPRECATEDParseableLocation()
            .equals(other.getDEPRECATEDParseableLocation());
      }
      result = result && (hasExplicitlySpecified() == other.hasExplicitlySpecified());
      if (hasExplicitlySpecified()) {
        result = result && (getExplicitlySpecified()
            == other.getExplicitlySpecified());
      }
      result = result && (hasNodep() == other.hasNodep());
      if (hasNodep()) {
        result = result && (getNodep()
            == other.getNodep());
      }
      result = result && (hasType() == other.hasType());
      if (hasType()) {
        result = result && type_ == other.type_;
      }
      result = result && (hasIntValue() == other.hasIntValue());
      if (hasIntValue()) {
        result = result && (getIntValue()
            == other.getIntValue());
      }
      result = result && (hasStringValue() == other.hasStringValue());
      if (hasStringValue()) {
        result = result && getStringValue()
            .equals(other.getStringValue());
      }
      result = result && (hasBooleanValue() == other.hasBooleanValue());
      if (hasBooleanValue()) {
        result = result && (getBooleanValue()
            == other.getBooleanValue());
      }
      result = result && (hasTristateValue() == other.hasTristateValue());
      if (hasTristateValue()) {
        result = result && tristateValue_ == other.tristateValue_;
      }
      result = result && getStringListValueList()
          .equals(other.getStringListValueList());
      result = result && (hasLicense() == other.hasLicense());
      if (hasLicense()) {
        result = result && getLicense()
            .equals(other.getLicense());
      }
      result = result && getStringDictValueList()
          .equals(other.getStringDictValueList());
      result = result && getFilesetListValueList()
          .equals(other.getFilesetListValueList());
      result = result && getLabelListDictValueList()
          .equals(other.getLabelListDictValueList());
      result = result && getStringListDictValueList()
          .equals(other.getStringListDictValueList());
      result = result && getGlobCriteriaList()
          .equals(other.getGlobCriteriaList());
      result = result && getIntListValueList()
          .equals(other.getIntListValueList());
      result = result && getStringDictUnaryValueList()
          .equals(other.getStringDictUnaryValueList());
      result = result && getLabelDictUnaryValueList()
          .equals(other.getLabelDictUnaryValueList());
      result = result && (hasSelectorList() == other.hasSelectorList());
      if (hasSelectorList()) {
        result = result && getSelectorList()
            .equals(other.getSelectorList());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasDEPRECATEDParseableLocation()) {
        hash = (37 * hash) + DEPRECATED_PARSEABLE_LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getDEPRECATEDParseableLocation().hashCode();
      }
      if (hasExplicitlySpecified()) {
        hash = (37 * hash) + EXPLICITLY_SPECIFIED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getExplicitlySpecified());
      }
      if (hasNodep()) {
        hash = (37 * hash) + NODEP_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getNodep());
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
      }
      if (hasIntValue()) {
        hash = (37 * hash) + INT_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getIntValue();
      }
      if (hasStringValue()) {
        hash = (37 * hash) + STRING_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getStringValue().hashCode();
      }
      if (hasBooleanValue()) {
        hash = (37 * hash) + BOOLEAN_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getBooleanValue());
      }
      if (hasTristateValue()) {
        hash = (37 * hash) + TRISTATE_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + tristateValue_;
      }
      if (getStringListValueCount() > 0) {
        hash = (37 * hash) + STRING_LIST_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getStringListValueList().hashCode();
      }
      if (hasLicense()) {
        hash = (37 * hash) + LICENSE_FIELD_NUMBER;
        hash = (53 * hash) + getLicense().hashCode();
      }
      if (getStringDictValueCount() > 0) {
        hash = (37 * hash) + STRING_DICT_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getStringDictValueList().hashCode();
      }
      if (getFilesetListValueCount() > 0) {
        hash = (37 * hash) + FILESET_LIST_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getFilesetListValueList().hashCode();
      }
      if (getLabelListDictValueCount() > 0) {
        hash = (37 * hash) + LABEL_LIST_DICT_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getLabelListDictValueList().hashCode();
      }
      if (getStringListDictValueCount() > 0) {
        hash = (37 * hash) + STRING_LIST_DICT_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getStringListDictValueList().hashCode();
      }
      if (getGlobCriteriaCount() > 0) {
        hash = (37 * hash) + GLOB_CRITERIA_FIELD_NUMBER;
        hash = (53 * hash) + getGlobCriteriaList().hashCode();
      }
      if (getIntListValueCount() > 0) {
        hash = (37 * hash) + INT_LIST_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getIntListValueList().hashCode();
      }
      if (getStringDictUnaryValueCount() > 0) {
        hash = (37 * hash) + STRING_DICT_UNARY_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getStringDictUnaryValueList().hashCode();
      }
      if (getLabelDictUnaryValueCount() > 0) {
        hash = (37 * hash) + LABEL_DICT_UNARY_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getLabelDictUnaryValueList().hashCode();
      }
      if (hasSelectorList()) {
        hash = (37 * hash) + SELECTOR_LIST_FIELD_NUMBER;
        hash = (53 * hash) + getSelectorList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A rule attribute. Each attribute must have a type and one of the various
     * value fields populated - for the most part.
     * Attributes of BOOLEAN and TRISTATE type may set all of the int, bool, and
     * string values for backwards compatibility with clients that expect them to
     * be set.
     * Attributes of INTEGER, STRING, LABEL, LICENSE, BOOLEAN, and TRISTATE type
     * may set *none* of the values. This can happen if the Attribute message is
     * prepared for a client that doesn't support SELECTOR_LIST, but the rule has
     * a selector list value for the attribute. (Selector lists for attributes of
     * other types--the collection types--are handled differently when prepared
     * for such a client. The possible collection values are gathered together
     * and flattened.)
     * By checking the type, the appropriate value can be extracted - see the
     * comments on each type for the associated value.  The order of lists comes
     * from the blaze parsing. If an attribute is of a list type, the associated
     * list should never be empty.
     * </pre>
     *
     * Protobuf type {@code blaze_query.Attribute}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.Attribute)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDEPRECATEDParseableLocationFieldBuilder();
          getLicenseFieldBuilder();
          getStringDictValueFieldBuilder();
          getFilesetListValueFieldBuilder();
          getLabelListDictValueFieldBuilder();
          getStringListDictValueFieldBuilder();
          getGlobCriteriaFieldBuilder();
          getStringDictUnaryValueFieldBuilder();
          getLabelDictUnaryValueFieldBuilder();
          getSelectorListFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = null;
        } else {
          dEPRECATEDParseableLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        explicitlySpecified_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        nodep_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        type_ = 1;
        bitField0_ = (bitField0_ & ~0x00000010);
        intValue_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        stringValue_ = "";
        bitField0_ = (bitField0_ & ~0x00000040);
        booleanValue_ = false;
        bitField0_ = (bitField0_ & ~0x00000080);
        tristateValue_ = 0;
        bitField0_ = (bitField0_ & ~0x00000100);
        stringListValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        if (licenseBuilder_ == null) {
          license_ = null;
        } else {
          licenseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        if (stringDictValueBuilder_ == null) {
          stringDictValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
        } else {
          stringDictValueBuilder_.clear();
        }
        if (filesetListValueBuilder_ == null) {
          filesetListValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
        } else {
          filesetListValueBuilder_.clear();
        }
        if (labelListDictValueBuilder_ == null) {
          labelListDictValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
        } else {
          labelListDictValueBuilder_.clear();
        }
        if (stringListDictValueBuilder_ == null) {
          stringListDictValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00004000);
        } else {
          stringListDictValueBuilder_.clear();
        }
        if (globCriteriaBuilder_ == null) {
          globCriteria_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
        } else {
          globCriteriaBuilder_.clear();
        }
        intListValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00010000);
        if (stringDictUnaryValueBuilder_ == null) {
          stringDictUnaryValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00020000);
        } else {
          stringDictUnaryValueBuilder_.clear();
        }
        if (labelDictUnaryValueBuilder_ == null) {
          labelDictUnaryValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00040000);
        } else {
          labelDictUnaryValueBuilder_.clear();
        }
        if (selectorListBuilder_ == null) {
          selectorList_ = null;
        } else {
          selectorListBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00080000);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Attribute_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          result.dEPRECATEDParseableLocation_ = dEPRECATEDParseableLocation_;
        } else {
          result.dEPRECATEDParseableLocation_ = dEPRECATEDParseableLocationBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.explicitlySpecified_ = explicitlySpecified_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.nodep_ = nodep_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.intValue_ = intValue_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.stringValue_ = stringValue_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.booleanValue_ = booleanValue_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.tristateValue_ = tristateValue_;
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          stringListValue_ = stringListValue_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.stringListValue_ = stringListValue_;
        if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
          to_bitField0_ |= 0x00000200;
        }
        if (licenseBuilder_ == null) {
          result.license_ = license_;
        } else {
          result.license_ = licenseBuilder_.build();
        }
        if (stringDictValueBuilder_ == null) {
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            stringDictValue_ = java.util.Collections.unmodifiableList(stringDictValue_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.stringDictValue_ = stringDictValue_;
        } else {
          result.stringDictValue_ = stringDictValueBuilder_.build();
        }
        if (filesetListValueBuilder_ == null) {
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            filesetListValue_ = java.util.Collections.unmodifiableList(filesetListValue_);
            bitField0_ = (bitField0_ & ~0x00001000);
          }
          result.filesetListValue_ = filesetListValue_;
        } else {
          result.filesetListValue_ = filesetListValueBuilder_.build();
        }
        if (labelListDictValueBuilder_ == null) {
          if (((bitField0_ & 0x00002000) == 0x00002000)) {
            labelListDictValue_ = java.util.Collections.unmodifiableList(labelListDictValue_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.labelListDictValue_ = labelListDictValue_;
        } else {
          result.labelListDictValue_ = labelListDictValueBuilder_.build();
        }
        if (stringListDictValueBuilder_ == null) {
          if (((bitField0_ & 0x00004000) == 0x00004000)) {
            stringListDictValue_ = java.util.Collections.unmodifiableList(stringListDictValue_);
            bitField0_ = (bitField0_ & ~0x00004000);
          }
          result.stringListDictValue_ = stringListDictValue_;
        } else {
          result.stringListDictValue_ = stringListDictValueBuilder_.build();
        }
        if (globCriteriaBuilder_ == null) {
          if (((bitField0_ & 0x00008000) == 0x00008000)) {
            globCriteria_ = java.util.Collections.unmodifiableList(globCriteria_);
            bitField0_ = (bitField0_ & ~0x00008000);
          }
          result.globCriteria_ = globCriteria_;
        } else {
          result.globCriteria_ = globCriteriaBuilder_.build();
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          intListValue_ = java.util.Collections.unmodifiableList(intListValue_);
          bitField0_ = (bitField0_ & ~0x00010000);
        }
        result.intListValue_ = intListValue_;
        if (stringDictUnaryValueBuilder_ == null) {
          if (((bitField0_ & 0x00020000) == 0x00020000)) {
            stringDictUnaryValue_ = java.util.Collections.unmodifiableList(stringDictUnaryValue_);
            bitField0_ = (bitField0_ & ~0x00020000);
          }
          result.stringDictUnaryValue_ = stringDictUnaryValue_;
        } else {
          result.stringDictUnaryValue_ = stringDictUnaryValueBuilder_.build();
        }
        if (labelDictUnaryValueBuilder_ == null) {
          if (((bitField0_ & 0x00040000) == 0x00040000)) {
            labelDictUnaryValue_ = java.util.Collections.unmodifiableList(labelDictUnaryValue_);
            bitField0_ = (bitField0_ & ~0x00040000);
          }
          result.labelDictUnaryValue_ = labelDictUnaryValue_;
        } else {
          result.labelDictUnaryValue_ = labelDictUnaryValueBuilder_.build();
        }
        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
          to_bitField0_ |= 0x00000400;
        }
        if (selectorListBuilder_ == null) {
          result.selectorList_ = selectorList_;
        } else {
          result.selectorList_ = selectorListBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasDEPRECATEDParseableLocation()) {
          mergeDEPRECATEDParseableLocation(other.getDEPRECATEDParseableLocation());
        }
        if (other.hasExplicitlySpecified()) {
          setExplicitlySpecified(other.getExplicitlySpecified());
        }
        if (other.hasNodep()) {
          setNodep(other.getNodep());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasIntValue()) {
          setIntValue(other.getIntValue());
        }
        if (other.hasStringValue()) {
          bitField0_ |= 0x00000040;
          stringValue_ = other.stringValue_;
          onChanged();
        }
        if (other.hasBooleanValue()) {
          setBooleanValue(other.getBooleanValue());
        }
        if (other.hasTristateValue()) {
          setTristateValue(other.getTristateValue());
        }
        if (!other.stringListValue_.isEmpty()) {
          if (stringListValue_.isEmpty()) {
            stringListValue_ = other.stringListValue_;
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            ensureStringListValueIsMutable();
            stringListValue_.addAll(other.stringListValue_);
          }
          onChanged();
        }
        if (other.hasLicense()) {
          mergeLicense(other.getLicense());
        }
        if (stringDictValueBuilder_ == null) {
          if (!other.stringDictValue_.isEmpty()) {
            if (stringDictValue_.isEmpty()) {
              stringDictValue_ = other.stringDictValue_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureStringDictValueIsMutable();
              stringDictValue_.addAll(other.stringDictValue_);
            }
            onChanged();
          }
        } else {
          if (!other.stringDictValue_.isEmpty()) {
            if (stringDictValueBuilder_.isEmpty()) {
              stringDictValueBuilder_.dispose();
              stringDictValueBuilder_ = null;
              stringDictValue_ = other.stringDictValue_;
              bitField0_ = (bitField0_ & ~0x00000800);
              stringDictValueBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getStringDictValueFieldBuilder() : null;
            } else {
              stringDictValueBuilder_.addAllMessages(other.stringDictValue_);
            }
          }
        }
        if (filesetListValueBuilder_ == null) {
          if (!other.filesetListValue_.isEmpty()) {
            if (filesetListValue_.isEmpty()) {
              filesetListValue_ = other.filesetListValue_;
              bitField0_ = (bitField0_ & ~0x00001000);
            } else {
              ensureFilesetListValueIsMutable();
              filesetListValue_.addAll(other.filesetListValue_);
            }
            onChanged();
          }
        } else {
          if (!other.filesetListValue_.isEmpty()) {
            if (filesetListValueBuilder_.isEmpty()) {
              filesetListValueBuilder_.dispose();
              filesetListValueBuilder_ = null;
              filesetListValue_ = other.filesetListValue_;
              bitField0_ = (bitField0_ & ~0x00001000);
              filesetListValueBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFilesetListValueFieldBuilder() : null;
            } else {
              filesetListValueBuilder_.addAllMessages(other.filesetListValue_);
            }
          }
        }
        if (labelListDictValueBuilder_ == null) {
          if (!other.labelListDictValue_.isEmpty()) {
            if (labelListDictValue_.isEmpty()) {
              labelListDictValue_ = other.labelListDictValue_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureLabelListDictValueIsMutable();
              labelListDictValue_.addAll(other.labelListDictValue_);
            }
            onChanged();
          }
        } else {
          if (!other.labelListDictValue_.isEmpty()) {
            if (labelListDictValueBuilder_.isEmpty()) {
              labelListDictValueBuilder_.dispose();
              labelListDictValueBuilder_ = null;
              labelListDictValue_ = other.labelListDictValue_;
              bitField0_ = (bitField0_ & ~0x00002000);
              labelListDictValueBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLabelListDictValueFieldBuilder() : null;
            } else {
              labelListDictValueBuilder_.addAllMessages(other.labelListDictValue_);
            }
          }
        }
        if (stringListDictValueBuilder_ == null) {
          if (!other.stringListDictValue_.isEmpty()) {
            if (stringListDictValue_.isEmpty()) {
              stringListDictValue_ = other.stringListDictValue_;
              bitField0_ = (bitField0_ & ~0x00004000);
            } else {
              ensureStringListDictValueIsMutable();
              stringListDictValue_.addAll(other.stringListDictValue_);
            }
            onChanged();
          }
        } else {
          if (!other.stringListDictValue_.isEmpty()) {
            if (stringListDictValueBuilder_.isEmpty()) {
              stringListDictValueBuilder_.dispose();
              stringListDictValueBuilder_ = null;
              stringListDictValue_ = other.stringListDictValue_;
              bitField0_ = (bitField0_ & ~0x00004000);
              stringListDictValueBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getStringListDictValueFieldBuilder() : null;
            } else {
              stringListDictValueBuilder_.addAllMessages(other.stringListDictValue_);
            }
          }
        }
        if (globCriteriaBuilder_ == null) {
          if (!other.globCriteria_.isEmpty()) {
            if (globCriteria_.isEmpty()) {
              globCriteria_ = other.globCriteria_;
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              ensureGlobCriteriaIsMutable();
              globCriteria_.addAll(other.globCriteria_);
            }
            onChanged();
          }
        } else {
          if (!other.globCriteria_.isEmpty()) {
            if (globCriteriaBuilder_.isEmpty()) {
              globCriteriaBuilder_.dispose();
              globCriteriaBuilder_ = null;
              globCriteria_ = other.globCriteria_;
              bitField0_ = (bitField0_ & ~0x00008000);
              globCriteriaBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getGlobCriteriaFieldBuilder() : null;
            } else {
              globCriteriaBuilder_.addAllMessages(other.globCriteria_);
            }
          }
        }
        if (!other.intListValue_.isEmpty()) {
          if (intListValue_.isEmpty()) {
            intListValue_ = other.intListValue_;
            bitField0_ = (bitField0_ & ~0x00010000);
          } else {
            ensureIntListValueIsMutable();
            intListValue_.addAll(other.intListValue_);
          }
          onChanged();
        }
        if (stringDictUnaryValueBuilder_ == null) {
          if (!other.stringDictUnaryValue_.isEmpty()) {
            if (stringDictUnaryValue_.isEmpty()) {
              stringDictUnaryValue_ = other.stringDictUnaryValue_;
              bitField0_ = (bitField0_ & ~0x00020000);
            } else {
              ensureStringDictUnaryValueIsMutable();
              stringDictUnaryValue_.addAll(other.stringDictUnaryValue_);
            }
            onChanged();
          }
        } else {
          if (!other.stringDictUnaryValue_.isEmpty()) {
            if (stringDictUnaryValueBuilder_.isEmpty()) {
              stringDictUnaryValueBuilder_.dispose();
              stringDictUnaryValueBuilder_ = null;
              stringDictUnaryValue_ = other.stringDictUnaryValue_;
              bitField0_ = (bitField0_ & ~0x00020000);
              stringDictUnaryValueBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getStringDictUnaryValueFieldBuilder() : null;
            } else {
              stringDictUnaryValueBuilder_.addAllMessages(other.stringDictUnaryValue_);
            }
          }
        }
        if (labelDictUnaryValueBuilder_ == null) {
          if (!other.labelDictUnaryValue_.isEmpty()) {
            if (labelDictUnaryValue_.isEmpty()) {
              labelDictUnaryValue_ = other.labelDictUnaryValue_;
              bitField0_ = (bitField0_ & ~0x00040000);
            } else {
              ensureLabelDictUnaryValueIsMutable();
              labelDictUnaryValue_.addAll(other.labelDictUnaryValue_);
            }
            onChanged();
          }
        } else {
          if (!other.labelDictUnaryValue_.isEmpty()) {
            if (labelDictUnaryValueBuilder_.isEmpty()) {
              labelDictUnaryValueBuilder_.dispose();
              labelDictUnaryValueBuilder_ = null;
              labelDictUnaryValue_ = other.labelDictUnaryValue_;
              bitField0_ = (bitField0_ & ~0x00040000);
              labelDictUnaryValueBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLabelDictUnaryValueFieldBuilder() : null;
            } else {
              labelDictUnaryValueBuilder_.addAllMessages(other.labelDictUnaryValue_);
            }
          }
        }
        if (other.hasSelectorList()) {
          mergeSelectorList(other.getSelectorList());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          return false;
        }
        if (!hasType()) {
          return false;
        }
        for (int i = 0; i < getStringDictValueCount(); i++) {
          if (!getStringDictValue(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getFilesetListValueCount(); i++) {
          if (!getFilesetListValue(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getLabelListDictValueCount(); i++) {
          if (!getLabelListDictValue(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getStringListDictValueCount(); i++) {
          if (!getStringListDictValue(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getStringDictUnaryValueCount(); i++) {
          if (!getStringDictUnaryValue(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getLabelDictUnaryValueCount(); i++) {
          if (!getLabelDictUnaryValue(i).isInitialized()) {
            return false;
          }
        }
        if (hasSelectorList()) {
          if (!getSelectorList().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The name of the attribute
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The name of the attribute
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the attribute
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the attribute
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the attribute
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the attribute
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDParseableLocation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> dEPRECATEDParseableLocationBuilder_;
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      public boolean hasDEPRECATEDParseableLocation() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
        } else {
          return dEPRECATEDParseableLocationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      public Builder setDEPRECATEDParseableLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dEPRECATEDParseableLocation_ = value;
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      public Builder setDEPRECATEDParseableLocation(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder builderForValue) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = builderForValue.build();
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      public Builder mergeDEPRECATEDParseableLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              dEPRECATEDParseableLocation_ != null &&
              dEPRECATEDParseableLocation_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance()) {
            dEPRECATEDParseableLocation_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.newBuilder(dEPRECATEDParseableLocation_).mergeFrom(value).buildPartial();
          } else {
            dEPRECATEDParseableLocation_ = value;
          }
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      public Builder clearDEPRECATEDParseableLocation() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = null;
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder getDEPRECATEDParseableLocationBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getDEPRECATEDParseableLocationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder() {
        if (dEPRECATEDParseableLocationBuilder_ != null) {
          return dEPRECATEDParseableLocationBuilder_.getMessageOrBuilder();
        } else {
          return dEPRECATEDParseableLocation_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
        }
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> 
          getDEPRECATEDParseableLocationFieldBuilder() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder>(
                  getDEPRECATEDParseableLocation(),
                  getParentForChildren(),
                  isClean());
          dEPRECATEDParseableLocation_ = null;
        }
        return dEPRECATEDParseableLocationBuilder_;
      }

      private boolean explicitlySpecified_ ;
      /**
       * <pre>
       * Whether the attribute was explicitly specified
       * </pre>
       *
       * <code>optional bool explicitly_specified = 13;</code>
       */
      public boolean hasExplicitlySpecified() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * Whether the attribute was explicitly specified
       * </pre>
       *
       * <code>optional bool explicitly_specified = 13;</code>
       */
      public boolean getExplicitlySpecified() {
        return explicitlySpecified_;
      }
      /**
       * <pre>
       * Whether the attribute was explicitly specified
       * </pre>
       *
       * <code>optional bool explicitly_specified = 13;</code>
       */
      public Builder setExplicitlySpecified(boolean value) {
        bitField0_ |= 0x00000004;
        explicitlySpecified_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the attribute was explicitly specified
       * </pre>
       *
       * <code>optional bool explicitly_specified = 13;</code>
       */
      public Builder clearExplicitlySpecified() {
        bitField0_ = (bitField0_ & ~0x00000004);
        explicitlySpecified_ = false;
        onChanged();
        return this;
      }

      private boolean nodep_ ;
      /**
       * <pre>
       * If this attribute has a string value or a string list value, then this
       * may be set to indicate that the value may be treated as a label that
       * isn't a dependency of this attribute's rule.
       * </pre>
       *
       * <code>optional bool nodep = 20;</code>
       */
      public boolean hasNodep() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       * If this attribute has a string value or a string list value, then this
       * may be set to indicate that the value may be treated as a label that
       * isn't a dependency of this attribute's rule.
       * </pre>
       *
       * <code>optional bool nodep = 20;</code>
       */
      public boolean getNodep() {
        return nodep_;
      }
      /**
       * <pre>
       * If this attribute has a string value or a string list value, then this
       * may be set to indicate that the value may be treated as a label that
       * isn't a dependency of this attribute's rule.
       * </pre>
       *
       * <code>optional bool nodep = 20;</code>
       */
      public Builder setNodep(boolean value) {
        bitField0_ |= 0x00000008;
        nodep_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If this attribute has a string value or a string list value, then this
       * may be set to indicate that the value may be treated as a label that
       * isn't a dependency of this attribute's rule.
       * </pre>
       *
       * <code>optional bool nodep = 20;</code>
       */
      public Builder clearNodep() {
        bitField0_ = (bitField0_ & ~0x00000008);
        nodep_ = false;
        onChanged();
        return this;
      }

      private int type_ = 1;
      /**
       * <pre>
       * The type of attribute.  This message is used for all of the different
       * attribute types so the discriminator helps for figuring out what is
       * stored in the message.
       * </pre>
       *
       * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <pre>
       * The type of attribute.  This message is used for all of the different
       * attribute types so the discriminator helps for figuring out what is
       * stored in the message.
       * </pre>
       *
       * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(type_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.INTEGER : result;
      }
      /**
       * <pre>
       * The type of attribute.  This message is used for all of the different
       * attribute types so the discriminator helps for figuring out what is
       * stored in the message.
       * </pre>
       *
       * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
       */
      public Builder setType(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000010;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of attribute.  This message is used for all of the different
       * attribute types so the discriminator helps for figuring out what is
       * stored in the message.
       * </pre>
       *
       * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000010);
        type_ = 1;
        onChanged();
        return this;
      }

      private int intValue_ ;
      /**
       * <pre>
       * If this attribute has an integer value this will be populated.
       * Boolean and TriState also use this field as [0,1] and [-1,0,1]
       * for [false, true] and [auto, no, yes] respectively.
       * </pre>
       *
       * <code>optional int32 int_value = 3;</code>
       */
      public boolean hasIntValue() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <pre>
       * If this attribute has an integer value this will be populated.
       * Boolean and TriState also use this field as [0,1] and [-1,0,1]
       * for [false, true] and [auto, no, yes] respectively.
       * </pre>
       *
       * <code>optional int32 int_value = 3;</code>
       */
      public int getIntValue() {
        return intValue_;
      }
      /**
       * <pre>
       * If this attribute has an integer value this will be populated.
       * Boolean and TriState also use this field as [0,1] and [-1,0,1]
       * for [false, true] and [auto, no, yes] respectively.
       * </pre>
       *
       * <code>optional int32 int_value = 3;</code>
       */
      public Builder setIntValue(int value) {
        bitField0_ |= 0x00000020;
        intValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If this attribute has an integer value this will be populated.
       * Boolean and TriState also use this field as [0,1] and [-1,0,1]
       * for [false, true] and [auto, no, yes] respectively.
       * </pre>
       *
       * <code>optional int32 int_value = 3;</code>
       */
      public Builder clearIntValue() {
        bitField0_ = (bitField0_ & ~0x00000020);
        intValue_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object stringValue_ = "";
      /**
       * <pre>
       * If the attribute has a string value this will be populated.  Label and
       * path attributes use this field as the value even though the type may
       * be LABEL or something else other than STRING.
       * </pre>
       *
       * <code>optional string string_value = 5;</code>
       */
      public boolean hasStringValue() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <pre>
       * If the attribute has a string value this will be populated.  Label and
       * path attributes use this field as the value even though the type may
       * be LABEL or something else other than STRING.
       * </pre>
       *
       * <code>optional string string_value = 5;</code>
       */
      public java.lang.String getStringValue() {
        java.lang.Object ref = stringValue_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            stringValue_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * If the attribute has a string value this will be populated.  Label and
       * path attributes use this field as the value even though the type may
       * be LABEL or something else other than STRING.
       * </pre>
       *
       * <code>optional string string_value = 5;</code>
       */
      public com.google.protobuf.ByteString
          getStringValueBytes() {
        java.lang.Object ref = stringValue_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stringValue_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * If the attribute has a string value this will be populated.  Label and
       * path attributes use this field as the value even though the type may
       * be LABEL or something else other than STRING.
       * </pre>
       *
       * <code>optional string string_value = 5;</code>
       */
      public Builder setStringValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        stringValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the attribute has a string value this will be populated.  Label and
       * path attributes use this field as the value even though the type may
       * be LABEL or something else other than STRING.
       * </pre>
       *
       * <code>optional string string_value = 5;</code>
       */
      public Builder clearStringValue() {
        bitField0_ = (bitField0_ & ~0x00000040);
        stringValue_ = getDefaultInstance().getStringValue();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the attribute has a string value this will be populated.  Label and
       * path attributes use this field as the value even though the type may
       * be LABEL or something else other than STRING.
       * </pre>
       *
       * <code>optional string string_value = 5;</code>
       */
      public Builder setStringValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000040;
        stringValue_ = value;
        onChanged();
        return this;
      }

      private boolean booleanValue_ ;
      /**
       * <pre>
       * If the attribute has a boolean value this will be populated.
       * </pre>
       *
       * <code>optional bool boolean_value = 14;</code>
       */
      public boolean hasBooleanValue() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <pre>
       * If the attribute has a boolean value this will be populated.
       * </pre>
       *
       * <code>optional bool boolean_value = 14;</code>
       */
      public boolean getBooleanValue() {
        return booleanValue_;
      }
      /**
       * <pre>
       * If the attribute has a boolean value this will be populated.
       * </pre>
       *
       * <code>optional bool boolean_value = 14;</code>
       */
      public Builder setBooleanValue(boolean value) {
        bitField0_ |= 0x00000080;
        booleanValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the attribute has a boolean value this will be populated.
       * </pre>
       *
       * <code>optional bool boolean_value = 14;</code>
       */
      public Builder clearBooleanValue() {
        bitField0_ = (bitField0_ & ~0x00000080);
        booleanValue_ = false;
        onChanged();
        return this;
      }

      private int tristateValue_ = 0;
      /**
       * <pre>
       * If the attribute is a Tristate value, this will be populated.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.Tristate tristate_value = 15;</code>
       */
      public boolean hasTristateValue() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <pre>
       * If the attribute is a Tristate value, this will be populated.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.Tristate tristate_value = 15;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate getTristateValue() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.valueOf(tristateValue_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate.NO : result;
      }
      /**
       * <pre>
       * If the attribute is a Tristate value, this will be populated.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.Tristate tristate_value = 15;</code>
       */
      public Builder setTristateValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Tristate value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000100;
        tristateValue_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the attribute is a Tristate value, this will be populated.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.Tristate tristate_value = 15;</code>
       */
      public Builder clearTristateValue() {
        bitField0_ = (bitField0_ & ~0x00000100);
        tristateValue_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList stringListValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStringListValueIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          stringListValue_ = new com.google.protobuf.LazyStringArrayList(stringListValue_);
          bitField0_ |= 0x00000200;
         }
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getStringListValueList() {
        return stringListValue_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public int getStringListValueCount() {
        return stringListValue_.size();
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public java.lang.String getStringListValue(int index) {
        return stringListValue_.get(index);
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public com.google.protobuf.ByteString
          getStringListValueBytes(int index) {
        return stringListValue_.getByteString(index);
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public Builder setStringListValue(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringListValueIsMutable();
        stringListValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public Builder addStringListValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringListValueIsMutable();
        stringListValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public Builder addAllStringListValue(
          java.lang.Iterable<java.lang.String> values) {
        ensureStringListValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, stringListValue_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public Builder clearStringListValue() {
        stringListValue_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The value of the attribute has a list of string values (label and path
       * note from STRING applies here as well).
       * </pre>
       *
       * <code>repeated string string_list_value = 6;</code>
       */
      public Builder addStringListValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStringListValueIsMutable();
        stringListValue_.add(value);
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.License license_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder> licenseBuilder_;
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public boolean hasLicense() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense() {
        if (licenseBuilder_ == null) {
          return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
        } else {
          return licenseBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public Builder setLicense(com.google.devtools.build.lib.query2.proto.proto2api.Build.License value) {
        if (licenseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          license_ = value;
          onChanged();
        } else {
          licenseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public Builder setLicense(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder builderForValue) {
        if (licenseBuilder_ == null) {
          license_ = builderForValue.build();
          onChanged();
        } else {
          licenseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public Builder mergeLicense(com.google.devtools.build.lib.query2.proto.proto2api.Build.License value) {
        if (licenseBuilder_ == null) {
          if (((bitField0_ & 0x00000400) == 0x00000400) &&
              license_ != null &&
              license_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance()) {
            license_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License.newBuilder(license_).mergeFrom(value).buildPartial();
          } else {
            license_ = value;
          }
          onChanged();
        } else {
          licenseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public Builder clearLicense() {
        if (licenseBuilder_ == null) {
          license_ = null;
          onChanged();
        } else {
          licenseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder getLicenseBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getLicenseFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder() {
        if (licenseBuilder_ != null) {
          return licenseBuilder_.getMessageOrBuilder();
        } else {
          return license_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
        }
      }
      /**
       * <pre>
       * If this is a license attribute, the license information is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder> 
          getLicenseFieldBuilder() {
        if (licenseBuilder_ == null) {
          licenseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder>(
                  getLicense(),
                  getParentForChildren(),
                  isClean());
          license_ = null;
        }
        return licenseBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> stringDictValue_ =
        java.util.Collections.emptyList();
      private void ensureStringDictValueIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          stringDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry>(stringDictValue_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> stringDictValueBuilder_;

      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> getStringDictValueList() {
        if (stringDictValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(stringDictValue_);
        } else {
          return stringDictValueBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public int getStringDictValueCount() {
        if (stringDictValueBuilder_ == null) {
          return stringDictValue_.size();
        } else {
          return stringDictValueBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry getStringDictValue(int index) {
        if (stringDictValueBuilder_ == null) {
          return stringDictValue_.get(index);
        } else {
          return stringDictValueBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder setStringDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry value) {
        if (stringDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringDictValueIsMutable();
          stringDictValue_.set(index, value);
          onChanged();
        } else {
          stringDictValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder setStringDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder builderForValue) {
        if (stringDictValueBuilder_ == null) {
          ensureStringDictValueIsMutable();
          stringDictValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          stringDictValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder addStringDictValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry value) {
        if (stringDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringDictValueIsMutable();
          stringDictValue_.add(value);
          onChanged();
        } else {
          stringDictValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder addStringDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry value) {
        if (stringDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringDictValueIsMutable();
          stringDictValue_.add(index, value);
          onChanged();
        } else {
          stringDictValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder addStringDictValue(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder builderForValue) {
        if (stringDictValueBuilder_ == null) {
          ensureStringDictValueIsMutable();
          stringDictValue_.add(builderForValue.build());
          onChanged();
        } else {
          stringDictValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder addStringDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder builderForValue) {
        if (stringDictValueBuilder_ == null) {
          ensureStringDictValueIsMutable();
          stringDictValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          stringDictValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder addAllStringDictValue(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry> values) {
        if (stringDictValueBuilder_ == null) {
          ensureStringDictValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, stringDictValue_);
          onChanged();
        } else {
          stringDictValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder clearStringDictValue() {
        if (stringDictValueBuilder_ == null) {
          stringDictValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          stringDictValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public Builder removeStringDictValue(int index) {
        if (stringDictValueBuilder_ == null) {
          ensureStringDictValueIsMutable();
          stringDictValue_.remove(index);
          onChanged();
        } else {
          stringDictValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder getStringDictValueBuilder(
          int index) {
        return getStringDictValueFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder getStringDictValueOrBuilder(
          int index) {
        if (stringDictValueBuilder_ == null) {
          return stringDictValue_.get(index);  } else {
          return stringDictValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> 
           getStringDictValueOrBuilderList() {
        if (stringDictValueBuilder_ != null) {
          return stringDictValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(stringDictValue_);
        }
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder addStringDictValueBuilder() {
        return getStringDictValueFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder addStringDictValueBuilder(
          int index) {
        return getStringDictValueFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a string dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictEntry string_dict_value = 8;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder> 
           getStringDictValueBuilderList() {
        return getStringDictValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder> 
          getStringDictValueFieldBuilder() {
        if (stringDictValueBuilder_ == null) {
          stringDictValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictEntryOrBuilder>(
                  stringDictValue_,
                  ((bitField0_ & 0x00000800) == 0x00000800),
                  getParentForChildren(),
                  isClean());
          stringDictValue_ = null;
        }
        return stringDictValueBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> filesetListValue_ =
        java.util.Collections.emptyList();
      private void ensureFilesetListValueIsMutable() {
        if (!((bitField0_ & 0x00001000) == 0x00001000)) {
          filesetListValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry>(filesetListValue_);
          bitField0_ |= 0x00001000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> filesetListValueBuilder_;

      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> getFilesetListValueList() {
        if (filesetListValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(filesetListValue_);
        } else {
          return filesetListValueBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public int getFilesetListValueCount() {
        if (filesetListValueBuilder_ == null) {
          return filesetListValue_.size();
        } else {
          return filesetListValueBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry getFilesetListValue(int index) {
        if (filesetListValueBuilder_ == null) {
          return filesetListValue_.get(index);
        } else {
          return filesetListValueBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder setFilesetListValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry value) {
        if (filesetListValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesetListValueIsMutable();
          filesetListValue_.set(index, value);
          onChanged();
        } else {
          filesetListValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder setFilesetListValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder builderForValue) {
        if (filesetListValueBuilder_ == null) {
          ensureFilesetListValueIsMutable();
          filesetListValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          filesetListValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder addFilesetListValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry value) {
        if (filesetListValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesetListValueIsMutable();
          filesetListValue_.add(value);
          onChanged();
        } else {
          filesetListValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder addFilesetListValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry value) {
        if (filesetListValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesetListValueIsMutable();
          filesetListValue_.add(index, value);
          onChanged();
        } else {
          filesetListValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder addFilesetListValue(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder builderForValue) {
        if (filesetListValueBuilder_ == null) {
          ensureFilesetListValueIsMutable();
          filesetListValue_.add(builderForValue.build());
          onChanged();
        } else {
          filesetListValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder addFilesetListValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder builderForValue) {
        if (filesetListValueBuilder_ == null) {
          ensureFilesetListValueIsMutable();
          filesetListValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          filesetListValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder addAllFilesetListValue(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry> values) {
        if (filesetListValueBuilder_ == null) {
          ensureFilesetListValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, filesetListValue_);
          onChanged();
        } else {
          filesetListValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder clearFilesetListValue() {
        if (filesetListValueBuilder_ == null) {
          filesetListValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          onChanged();
        } else {
          filesetListValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public Builder removeFilesetListValue(int index) {
        if (filesetListValueBuilder_ == null) {
          ensureFilesetListValueIsMutable();
          filesetListValue_.remove(index);
          onChanged();
        } else {
          filesetListValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder getFilesetListValueBuilder(
          int index) {
        return getFilesetListValueFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder getFilesetListValueOrBuilder(
          int index) {
        if (filesetListValueBuilder_ == null) {
          return filesetListValue_.get(index);  } else {
          return filesetListValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> 
           getFilesetListValueOrBuilderList() {
        if (filesetListValueBuilder_ != null) {
          return filesetListValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(filesetListValue_);
        }
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder addFilesetListValueBuilder() {
        return getFilesetListValueFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder addFilesetListValueBuilder(
          int index) {
        return getFilesetListValueFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If the attribute is part of a Fileset, the fileset entries are stored in
       * this field.
       * </pre>
       *
       * <code>repeated .blaze_query.FilesetEntry fileset_list_value = 9;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder> 
           getFilesetListValueBuilderList() {
        return getFilesetListValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder> 
          getFilesetListValueFieldBuilder() {
        if (filesetListValueBuilder_ == null) {
          filesetListValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.FilesetEntryOrBuilder>(
                  filesetListValue_,
                  ((bitField0_ & 0x00001000) == 0x00001000),
                  getParentForChildren(),
                  isClean());
          filesetListValue_ = null;
        }
        return filesetListValueBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> labelListDictValue_ =
        java.util.Collections.emptyList();
      private void ensureLabelListDictValueIsMutable() {
        if (!((bitField0_ & 0x00002000) == 0x00002000)) {
          labelListDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry>(labelListDictValue_);
          bitField0_ |= 0x00002000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> labelListDictValueBuilder_;

      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> getLabelListDictValueList() {
        if (labelListDictValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(labelListDictValue_);
        } else {
          return labelListDictValueBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public int getLabelListDictValueCount() {
        if (labelListDictValueBuilder_ == null) {
          return labelListDictValue_.size();
        } else {
          return labelListDictValueBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry getLabelListDictValue(int index) {
        if (labelListDictValueBuilder_ == null) {
          return labelListDictValue_.get(index);
        } else {
          return labelListDictValueBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder setLabelListDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry value) {
        if (labelListDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelListDictValueIsMutable();
          labelListDictValue_.set(index, value);
          onChanged();
        } else {
          labelListDictValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder setLabelListDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder builderForValue) {
        if (labelListDictValueBuilder_ == null) {
          ensureLabelListDictValueIsMutable();
          labelListDictValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          labelListDictValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder addLabelListDictValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry value) {
        if (labelListDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelListDictValueIsMutable();
          labelListDictValue_.add(value);
          onChanged();
        } else {
          labelListDictValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder addLabelListDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry value) {
        if (labelListDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelListDictValueIsMutable();
          labelListDictValue_.add(index, value);
          onChanged();
        } else {
          labelListDictValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder addLabelListDictValue(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder builderForValue) {
        if (labelListDictValueBuilder_ == null) {
          ensureLabelListDictValueIsMutable();
          labelListDictValue_.add(builderForValue.build());
          onChanged();
        } else {
          labelListDictValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder addLabelListDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder builderForValue) {
        if (labelListDictValueBuilder_ == null) {
          ensureLabelListDictValueIsMutable();
          labelListDictValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          labelListDictValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder addAllLabelListDictValue(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry> values) {
        if (labelListDictValueBuilder_ == null) {
          ensureLabelListDictValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, labelListDictValue_);
          onChanged();
        } else {
          labelListDictValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder clearLabelListDictValue() {
        if (labelListDictValueBuilder_ == null) {
          labelListDictValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
        } else {
          labelListDictValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public Builder removeLabelListDictValue(int index) {
        if (labelListDictValueBuilder_ == null) {
          ensureLabelListDictValueIsMutable();
          labelListDictValue_.remove(index);
          onChanged();
        } else {
          labelListDictValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder getLabelListDictValueBuilder(
          int index) {
        return getLabelListDictValueFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder getLabelListDictValueOrBuilder(
          int index) {
        if (labelListDictValueBuilder_ == null) {
          return labelListDictValue_.get(index);  } else {
          return labelListDictValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> 
           getLabelListDictValueOrBuilderList() {
        if (labelListDictValueBuilder_ != null) {
          return labelListDictValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(labelListDictValue_);
        }
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder addLabelListDictValueBuilder() {
        return getLabelListDictValueFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder addLabelListDictValueBuilder(
          int index) {
        return getLabelListDictValueFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a label list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelListDictEntry label_list_dict_value = 10;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder> 
           getLabelListDictValueBuilderList() {
        return getLabelListDictValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder> 
          getLabelListDictValueFieldBuilder() {
        if (labelListDictValueBuilder_ == null) {
          labelListDictValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelListDictEntryOrBuilder>(
                  labelListDictValue_,
                  ((bitField0_ & 0x00002000) == 0x00002000),
                  getParentForChildren(),
                  isClean());
          labelListDictValue_ = null;
        }
        return labelListDictValueBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> stringListDictValue_ =
        java.util.Collections.emptyList();
      private void ensureStringListDictValueIsMutable() {
        if (!((bitField0_ & 0x00004000) == 0x00004000)) {
          stringListDictValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry>(stringListDictValue_);
          bitField0_ |= 0x00004000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> stringListDictValueBuilder_;

      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> getStringListDictValueList() {
        if (stringListDictValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(stringListDictValue_);
        } else {
          return stringListDictValueBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public int getStringListDictValueCount() {
        if (stringListDictValueBuilder_ == null) {
          return stringListDictValue_.size();
        } else {
          return stringListDictValueBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry getStringListDictValue(int index) {
        if (stringListDictValueBuilder_ == null) {
          return stringListDictValue_.get(index);
        } else {
          return stringListDictValueBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder setStringListDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry value) {
        if (stringListDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringListDictValueIsMutable();
          stringListDictValue_.set(index, value);
          onChanged();
        } else {
          stringListDictValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder setStringListDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder builderForValue) {
        if (stringListDictValueBuilder_ == null) {
          ensureStringListDictValueIsMutable();
          stringListDictValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          stringListDictValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder addStringListDictValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry value) {
        if (stringListDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringListDictValueIsMutable();
          stringListDictValue_.add(value);
          onChanged();
        } else {
          stringListDictValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder addStringListDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry value) {
        if (stringListDictValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringListDictValueIsMutable();
          stringListDictValue_.add(index, value);
          onChanged();
        } else {
          stringListDictValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder addStringListDictValue(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder builderForValue) {
        if (stringListDictValueBuilder_ == null) {
          ensureStringListDictValueIsMutable();
          stringListDictValue_.add(builderForValue.build());
          onChanged();
        } else {
          stringListDictValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder addStringListDictValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder builderForValue) {
        if (stringListDictValueBuilder_ == null) {
          ensureStringListDictValueIsMutable();
          stringListDictValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          stringListDictValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder addAllStringListDictValue(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry> values) {
        if (stringListDictValueBuilder_ == null) {
          ensureStringListDictValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, stringListDictValue_);
          onChanged();
        } else {
          stringListDictValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder clearStringListDictValue() {
        if (stringListDictValueBuilder_ == null) {
          stringListDictValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00004000);
          onChanged();
        } else {
          stringListDictValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public Builder removeStringListDictValue(int index) {
        if (stringListDictValueBuilder_ == null) {
          ensureStringListDictValueIsMutable();
          stringListDictValue_.remove(index);
          onChanged();
        } else {
          stringListDictValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder getStringListDictValueBuilder(
          int index) {
        return getStringListDictValueFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder getStringListDictValueOrBuilder(
          int index) {
        if (stringListDictValueBuilder_ == null) {
          return stringListDictValue_.get(index);  } else {
          return stringListDictValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> 
           getStringListDictValueOrBuilderList() {
        if (stringListDictValueBuilder_ != null) {
          return stringListDictValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(stringListDictValue_);
        }
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder addStringListDictValueBuilder() {
        return getStringListDictValueFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder addStringListDictValueBuilder(
          int index) {
        return getStringListDictValueFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a string list dict, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringListDictEntry string_list_dict_value = 11;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder> 
           getStringListDictValueBuilderList() {
        return getStringListDictValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder> 
          getStringListDictValueFieldBuilder() {
        if (stringListDictValueBuilder_ == null) {
          stringListDictValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringListDictEntryOrBuilder>(
                  stringListDictValue_,
                  ((bitField0_ & 0x00004000) == 0x00004000),
                  getParentForChildren(),
                  isClean());
          stringListDictValue_ = null;
        }
        return stringListDictValueBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> globCriteria_ =
        java.util.Collections.emptyList();
      private void ensureGlobCriteriaIsMutable() {
        if (!((bitField0_ & 0x00008000) == 0x00008000)) {
          globCriteria_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria>(globCriteria_);
          bitField0_ |= 0x00008000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> globCriteriaBuilder_;

      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> getGlobCriteriaList() {
        if (globCriteriaBuilder_ == null) {
          return java.util.Collections.unmodifiableList(globCriteria_);
        } else {
          return globCriteriaBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public int getGlobCriteriaCount() {
        if (globCriteriaBuilder_ == null) {
          return globCriteria_.size();
        } else {
          return globCriteriaBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getGlobCriteria(int index) {
        if (globCriteriaBuilder_ == null) {
          return globCriteria_.get(index);
        } else {
          return globCriteriaBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder setGlobCriteria(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria value) {
        if (globCriteriaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGlobCriteriaIsMutable();
          globCriteria_.set(index, value);
          onChanged();
        } else {
          globCriteriaBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder setGlobCriteria(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder builderForValue) {
        if (globCriteriaBuilder_ == null) {
          ensureGlobCriteriaIsMutable();
          globCriteria_.set(index, builderForValue.build());
          onChanged();
        } else {
          globCriteriaBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder addGlobCriteria(com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria value) {
        if (globCriteriaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGlobCriteriaIsMutable();
          globCriteria_.add(value);
          onChanged();
        } else {
          globCriteriaBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder addGlobCriteria(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria value) {
        if (globCriteriaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGlobCriteriaIsMutable();
          globCriteria_.add(index, value);
          onChanged();
        } else {
          globCriteriaBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder addGlobCriteria(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder builderForValue) {
        if (globCriteriaBuilder_ == null) {
          ensureGlobCriteriaIsMutable();
          globCriteria_.add(builderForValue.build());
          onChanged();
        } else {
          globCriteriaBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder addGlobCriteria(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder builderForValue) {
        if (globCriteriaBuilder_ == null) {
          ensureGlobCriteriaIsMutable();
          globCriteria_.add(index, builderForValue.build());
          onChanged();
        } else {
          globCriteriaBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder addAllGlobCriteria(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria> values) {
        if (globCriteriaBuilder_ == null) {
          ensureGlobCriteriaIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, globCriteria_);
          onChanged();
        } else {
          globCriteriaBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder clearGlobCriteria() {
        if (globCriteriaBuilder_ == null) {
          globCriteria_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
          onChanged();
        } else {
          globCriteriaBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public Builder removeGlobCriteria(int index) {
        if (globCriteriaBuilder_ == null) {
          ensureGlobCriteriaIsMutable();
          globCriteria_.remove(index);
          onChanged();
        } else {
          globCriteriaBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder getGlobCriteriaBuilder(
          int index) {
        return getGlobCriteriaFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder getGlobCriteriaOrBuilder(
          int index) {
        if (globCriteriaBuilder_ == null) {
          return globCriteria_.get(index);  } else {
          return globCriteriaBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> 
           getGlobCriteriaOrBuilderList() {
        if (globCriteriaBuilder_ != null) {
          return globCriteriaBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(globCriteria_);
        }
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder addGlobCriteriaBuilder() {
        return getGlobCriteriaFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.getDefaultInstance());
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder addGlobCriteriaBuilder(
          int index) {
        return getGlobCriteriaFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.getDefaultInstance());
      }
      /**
       * <pre>
       * The glob criteria. This is non-empty if:
       * 1. This attribute is a list of strings or labels, and,
       * 2. It contained a glob() expression
       * </pre>
       *
       * <code>repeated .blaze_query.GlobCriteria glob_criteria = 16;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder> 
           getGlobCriteriaBuilderList() {
        return getGlobCriteriaFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder> 
          getGlobCriteriaFieldBuilder() {
        if (globCriteriaBuilder_ == null) {
          globCriteriaBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder>(
                  globCriteria_,
                  ((bitField0_ & 0x00008000) == 0x00008000),
                  getParentForChildren(),
                  isClean());
          globCriteria_ = null;
        }
        return globCriteriaBuilder_;
      }

      private java.util.List<java.lang.Integer> intListValue_ = java.util.Collections.emptyList();
      private void ensureIntListValueIsMutable() {
        if (!((bitField0_ & 0x00010000) == 0x00010000)) {
          intListValue_ = new java.util.ArrayList<java.lang.Integer>(intListValue_);
          bitField0_ |= 0x00010000;
         }
      }
      /**
       * <pre>
       * The value of the attribute has a list of int32 values
       * </pre>
       *
       * <code>repeated int32 int_list_value = 17;</code>
       */
      public java.util.List<java.lang.Integer>
          getIntListValueList() {
        return java.util.Collections.unmodifiableList(intListValue_);
      }
      /**
       * <pre>
       * The value of the attribute has a list of int32 values
       * </pre>
       *
       * <code>repeated int32 int_list_value = 17;</code>
       */
      public int getIntListValueCount() {
        return intListValue_.size();
      }
      /**
       * <pre>
       * The value of the attribute has a list of int32 values
       * </pre>
       *
       * <code>repeated int32 int_list_value = 17;</code>
       */
      public int getIntListValue(int index) {
        return intListValue_.get(index);
      }
      /**
       * <pre>
       * The value of the attribute has a list of int32 values
       * </pre>
       *
       * <code>repeated int32 int_list_value = 17;</code>
       */
      public Builder setIntListValue(
          int index, int value) {
        ensureIntListValueIsMutable();
        intListValue_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The value of the attribute has a list of int32 values
       * </pre>
       *
       * <code>repeated int32 int_list_value = 17;</code>
       */
      public Builder addIntListValue(int value) {
        ensureIntListValueIsMutable();
        intListValue_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The value of the attribute has a list of int32 values
       * </pre>
       *
       * <code>repeated int32 int_list_value = 17;</code>
       */
      public Builder addAllIntListValue(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureIntListValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, intListValue_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The value of the attribute has a list of int32 values
       * </pre>
       *
       * <code>repeated int32 int_list_value = 17;</code>
       */
      public Builder clearIntListValue() {
        intListValue_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> stringDictUnaryValue_ =
        java.util.Collections.emptyList();
      private void ensureStringDictUnaryValueIsMutable() {
        if (!((bitField0_ & 0x00020000) == 0x00020000)) {
          stringDictUnaryValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry>(stringDictUnaryValue_);
          bitField0_ |= 0x00020000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> stringDictUnaryValueBuilder_;

      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> getStringDictUnaryValueList() {
        if (stringDictUnaryValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(stringDictUnaryValue_);
        } else {
          return stringDictUnaryValueBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public int getStringDictUnaryValueCount() {
        if (stringDictUnaryValueBuilder_ == null) {
          return stringDictUnaryValue_.size();
        } else {
          return stringDictUnaryValueBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry getStringDictUnaryValue(int index) {
        if (stringDictUnaryValueBuilder_ == null) {
          return stringDictUnaryValue_.get(index);
        } else {
          return stringDictUnaryValueBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder setStringDictUnaryValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry value) {
        if (stringDictUnaryValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringDictUnaryValueIsMutable();
          stringDictUnaryValue_.set(index, value);
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder setStringDictUnaryValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder builderForValue) {
        if (stringDictUnaryValueBuilder_ == null) {
          ensureStringDictUnaryValueIsMutable();
          stringDictUnaryValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder addStringDictUnaryValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry value) {
        if (stringDictUnaryValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringDictUnaryValueIsMutable();
          stringDictUnaryValue_.add(value);
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder addStringDictUnaryValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry value) {
        if (stringDictUnaryValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStringDictUnaryValueIsMutable();
          stringDictUnaryValue_.add(index, value);
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder addStringDictUnaryValue(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder builderForValue) {
        if (stringDictUnaryValueBuilder_ == null) {
          ensureStringDictUnaryValueIsMutable();
          stringDictUnaryValue_.add(builderForValue.build());
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder addStringDictUnaryValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder builderForValue) {
        if (stringDictUnaryValueBuilder_ == null) {
          ensureStringDictUnaryValueIsMutable();
          stringDictUnaryValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder addAllStringDictUnaryValue(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry> values) {
        if (stringDictUnaryValueBuilder_ == null) {
          ensureStringDictUnaryValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, stringDictUnaryValue_);
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder clearStringDictUnaryValue() {
        if (stringDictUnaryValueBuilder_ == null) {
          stringDictUnaryValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00020000);
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public Builder removeStringDictUnaryValue(int index) {
        if (stringDictUnaryValueBuilder_ == null) {
          ensureStringDictUnaryValueIsMutable();
          stringDictUnaryValue_.remove(index);
          onChanged();
        } else {
          stringDictUnaryValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder getStringDictUnaryValueBuilder(
          int index) {
        return getStringDictUnaryValueFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder getStringDictUnaryValueOrBuilder(
          int index) {
        if (stringDictUnaryValueBuilder_ == null) {
          return stringDictUnaryValue_.get(index);  } else {
          return stringDictUnaryValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> 
           getStringDictUnaryValueOrBuilderList() {
        if (stringDictUnaryValueBuilder_ != null) {
          return stringDictUnaryValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(stringDictUnaryValue_);
        }
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder addStringDictUnaryValueBuilder() {
        return getStringDictUnaryValueFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder addStringDictUnaryValueBuilder(
          int index) {
        return getStringDictUnaryValueFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a string dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.StringDictUnaryEntry string_dict_unary_value = 18;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder> 
           getStringDictUnaryValueBuilderList() {
        return getStringDictUnaryValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder> 
          getStringDictUnaryValueFieldBuilder() {
        if (stringDictUnaryValueBuilder_ == null) {
          stringDictUnaryValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.StringDictUnaryEntryOrBuilder>(
                  stringDictUnaryValue_,
                  ((bitField0_ & 0x00020000) == 0x00020000),
                  getParentForChildren(),
                  isClean());
          stringDictUnaryValue_ = null;
        }
        return stringDictUnaryValueBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> labelDictUnaryValue_ =
        java.util.Collections.emptyList();
      private void ensureLabelDictUnaryValueIsMutable() {
        if (!((bitField0_ & 0x00040000) == 0x00040000)) {
          labelDictUnaryValue_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry>(labelDictUnaryValue_);
          bitField0_ |= 0x00040000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> labelDictUnaryValueBuilder_;

      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> getLabelDictUnaryValueList() {
        if (labelDictUnaryValueBuilder_ == null) {
          return java.util.Collections.unmodifiableList(labelDictUnaryValue_);
        } else {
          return labelDictUnaryValueBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public int getLabelDictUnaryValueCount() {
        if (labelDictUnaryValueBuilder_ == null) {
          return labelDictUnaryValue_.size();
        } else {
          return labelDictUnaryValueBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry getLabelDictUnaryValue(int index) {
        if (labelDictUnaryValueBuilder_ == null) {
          return labelDictUnaryValue_.get(index);
        } else {
          return labelDictUnaryValueBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder setLabelDictUnaryValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry value) {
        if (labelDictUnaryValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelDictUnaryValueIsMutable();
          labelDictUnaryValue_.set(index, value);
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder setLabelDictUnaryValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder builderForValue) {
        if (labelDictUnaryValueBuilder_ == null) {
          ensureLabelDictUnaryValueIsMutable();
          labelDictUnaryValue_.set(index, builderForValue.build());
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder addLabelDictUnaryValue(com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry value) {
        if (labelDictUnaryValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelDictUnaryValueIsMutable();
          labelDictUnaryValue_.add(value);
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder addLabelDictUnaryValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry value) {
        if (labelDictUnaryValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelDictUnaryValueIsMutable();
          labelDictUnaryValue_.add(index, value);
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder addLabelDictUnaryValue(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder builderForValue) {
        if (labelDictUnaryValueBuilder_ == null) {
          ensureLabelDictUnaryValueIsMutable();
          labelDictUnaryValue_.add(builderForValue.build());
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder addLabelDictUnaryValue(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder builderForValue) {
        if (labelDictUnaryValueBuilder_ == null) {
          ensureLabelDictUnaryValueIsMutable();
          labelDictUnaryValue_.add(index, builderForValue.build());
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder addAllLabelDictUnaryValue(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry> values) {
        if (labelDictUnaryValueBuilder_ == null) {
          ensureLabelDictUnaryValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, labelDictUnaryValue_);
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder clearLabelDictUnaryValue() {
        if (labelDictUnaryValueBuilder_ == null) {
          labelDictUnaryValue_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00040000);
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public Builder removeLabelDictUnaryValue(int index) {
        if (labelDictUnaryValueBuilder_ == null) {
          ensureLabelDictUnaryValueIsMutable();
          labelDictUnaryValue_.remove(index);
          onChanged();
        } else {
          labelDictUnaryValueBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder getLabelDictUnaryValueBuilder(
          int index) {
        return getLabelDictUnaryValueFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder getLabelDictUnaryValueOrBuilder(
          int index) {
        if (labelDictUnaryValueBuilder_ == null) {
          return labelDictUnaryValue_.get(index);  } else {
          return labelDictUnaryValueBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> 
           getLabelDictUnaryValueOrBuilderList() {
        if (labelDictUnaryValueBuilder_ != null) {
          return labelDictUnaryValueBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(labelDictUnaryValue_);
        }
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder addLabelDictUnaryValueBuilder() {
        return getLabelDictUnaryValueFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder addLabelDictUnaryValueBuilder(
          int index) {
        return getLabelDictUnaryValueFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.getDefaultInstance());
      }
      /**
       * <pre>
       * If this is a label dict unary, each entry will be stored here.
       * </pre>
       *
       * <code>repeated .blaze_query.LabelDictUnaryEntry label_dict_unary_value = 19;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder> 
           getLabelDictUnaryValueBuilderList() {
        return getLabelDictUnaryValueFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder> 
          getLabelDictUnaryValueFieldBuilder() {
        if (labelDictUnaryValueBuilder_ == null) {
          labelDictUnaryValueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntry.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LabelDictUnaryEntryOrBuilder>(
                  labelDictUnaryValue_,
                  ((bitField0_ & 0x00040000) == 0x00040000),
                  getParentForChildren(),
                  isClean());
          labelDictUnaryValue_ = null;
        }
        return labelDictUnaryValueBuilder_;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList selectorList_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorListOrBuilder> selectorListBuilder_;
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      public boolean hasSelectorList() {
        return ((bitField0_ & 0x00080000) == 0x00080000);
      }
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList getSelectorList() {
        if (selectorListBuilder_ == null) {
          return selectorList_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.getDefaultInstance() : selectorList_;
        } else {
          return selectorListBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      public Builder setSelectorList(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList value) {
        if (selectorListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          selectorList_ = value;
          onChanged();
        } else {
          selectorListBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00080000;
        return this;
      }
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      public Builder setSelectorList(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.Builder builderForValue) {
        if (selectorListBuilder_ == null) {
          selectorList_ = builderForValue.build();
          onChanged();
        } else {
          selectorListBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00080000;
        return this;
      }
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      public Builder mergeSelectorList(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList value) {
        if (selectorListBuilder_ == null) {
          if (((bitField0_ & 0x00080000) == 0x00080000) &&
              selectorList_ != null &&
              selectorList_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.getDefaultInstance()) {
            selectorList_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.newBuilder(selectorList_).mergeFrom(value).buildPartial();
          } else {
            selectorList_ = value;
          }
          onChanged();
        } else {
          selectorListBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00080000;
        return this;
      }
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      public Builder clearSelectorList() {
        if (selectorListBuilder_ == null) {
          selectorList_ = null;
          onChanged();
        } else {
          selectorListBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00080000);
        return this;
      }
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.Builder getSelectorListBuilder() {
        bitField0_ |= 0x00080000;
        onChanged();
        return getSelectorListFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorListOrBuilder getSelectorListOrBuilder() {
        if (selectorListBuilder_ != null) {
          return selectorListBuilder_.getMessageOrBuilder();
        } else {
          return selectorList_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.getDefaultInstance() : selectorList_;
        }
      }
      /**
       * <pre>
       * If this attribute's value is an expression containing one or more select
       * expressions, then its type is SELECTOR_LIST and a SelectorList will be
       * stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Attribute.SelectorList selector_list = 21;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorListOrBuilder> 
          getSelectorListFieldBuilder() {
        if (selectorListBuilder_ == null) {
          selectorListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorList.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.SelectorListOrBuilder>(
                  getSelectorList(),
                  getParentForChildren(),
                  isClean());
          selectorList_ = null;
        }
        return selectorListBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.Attribute)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.Attribute)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <pre>
     * The name of the rule
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * The name of the rule
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of the rule
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The rule class (e.g., java_library)
     * </pre>
     *
     * <code>required string rule_class = 2;</code>
     */
    boolean hasRuleClass();
    /**
     * <pre>
     * The rule class (e.g., java_library)
     * </pre>
     *
     * <code>required string rule_class = 2;</code>
     */
    java.lang.String getRuleClass();
    /**
     * <pre>
     * The rule class (e.g., java_library)
     * </pre>
     *
     * <code>required string rule_class = 2;</code>
     */
    com.google.protobuf.ByteString
        getRuleClassBytes();

    /**
     * <pre>
     * The BUILD file and line number of the rule.
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    boolean hasLocation();
    /**
     * <pre>
     * The BUILD file and line number of the rule.
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    java.lang.String getLocation();
    /**
     * <pre>
     * The BUILD file and line number of the rule.
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    com.google.protobuf.ByteString
        getLocationBytes();

    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> 
        getAttributeList();
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getAttribute(int index);
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    int getAttributeCount();
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> 
        getAttributeOrBuilderList();
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder getAttributeOrBuilder(
        int index);

    /**
     * <pre>
     * All of the inputs to the rule.  These are predecessors in the dependency
     * graph.  A rule_input for a rule should always be described as a
     * source_file in some package (either the rule's package or some other one).
     * </pre>
     *
     * <code>repeated string rule_input = 5;</code>
     */
    java.util.List<java.lang.String>
        getRuleInputList();
    /**
     * <pre>
     * All of the inputs to the rule.  These are predecessors in the dependency
     * graph.  A rule_input for a rule should always be described as a
     * source_file in some package (either the rule's package or some other one).
     * </pre>
     *
     * <code>repeated string rule_input = 5;</code>
     */
    int getRuleInputCount();
    /**
     * <pre>
     * All of the inputs to the rule.  These are predecessors in the dependency
     * graph.  A rule_input for a rule should always be described as a
     * source_file in some package (either the rule's package or some other one).
     * </pre>
     *
     * <code>repeated string rule_input = 5;</code>
     */
    java.lang.String getRuleInput(int index);
    /**
     * <pre>
     * All of the inputs to the rule.  These are predecessors in the dependency
     * graph.  A rule_input for a rule should always be described as a
     * source_file in some package (either the rule's package or some other one).
     * </pre>
     *
     * <code>repeated string rule_input = 5;</code>
     */
    com.google.protobuf.ByteString
        getRuleInputBytes(int index);

    /**
     * <pre>
     * All of the outputs of the rule.  These are the successors in the
     * dependency graph.
     * </pre>
     *
     * <code>repeated string rule_output = 6;</code>
     */
    java.util.List<java.lang.String>
        getRuleOutputList();
    /**
     * <pre>
     * All of the outputs of the rule.  These are the successors in the
     * dependency graph.
     * </pre>
     *
     * <code>repeated string rule_output = 6;</code>
     */
    int getRuleOutputCount();
    /**
     * <pre>
     * All of the outputs of the rule.  These are the successors in the
     * dependency graph.
     * </pre>
     *
     * <code>repeated string rule_output = 6;</code>
     */
    java.lang.String getRuleOutput(int index);
    /**
     * <pre>
     * All of the outputs of the rule.  These are the successors in the
     * dependency graph.
     * </pre>
     *
     * <code>repeated string rule_output = 6;</code>
     */
    com.google.protobuf.ByteString
        getRuleOutputBytes(int index);

    /**
     * <pre>
     * The set of all default settings affecting this rule. The name of a default
     * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
     * types are:
     * - 'blaze': settings implemented in Blaze itself
     * </pre>
     *
     * <code>repeated string default_setting = 7;</code>
     */
    java.util.List<java.lang.String>
        getDefaultSettingList();
    /**
     * <pre>
     * The set of all default settings affecting this rule. The name of a default
     * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
     * types are:
     * - 'blaze': settings implemented in Blaze itself
     * </pre>
     *
     * <code>repeated string default_setting = 7;</code>
     */
    int getDefaultSettingCount();
    /**
     * <pre>
     * The set of all default settings affecting this rule. The name of a default
     * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
     * types are:
     * - 'blaze': settings implemented in Blaze itself
     * </pre>
     *
     * <code>repeated string default_setting = 7;</code>
     */
    java.lang.String getDefaultSetting(int index);
    /**
     * <pre>
     * The set of all default settings affecting this rule. The name of a default
     * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
     * types are:
     * - 'blaze': settings implemented in Blaze itself
     * </pre>
     *
     * <code>repeated string default_setting = 7;</code>
     */
    com.google.protobuf.ByteString
        getDefaultSettingBytes(int index);

    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
     */
    boolean hasDEPRECATEDParseableLocation();
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation();
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder();

    /**
     * <pre>
     * The rule's class's public by default value.
     * </pre>
     *
     * <code>optional bool public_by_default = 9;</code>
     */
    boolean hasPublicByDefault();
    /**
     * <pre>
     * The rule's class's public by default value.
     * </pre>
     *
     * <code>optional bool public_by_default = 9;</code>
     */
    boolean getPublicByDefault();

    /**
     * <pre>
     * If this rule is of a skylark-defined RuleClass.
     * </pre>
     *
     * <code>optional bool is_skylark = 10;</code>
     */
    boolean hasIsSkylark();
    /**
     * <pre>
     * If this rule is of a skylark-defined RuleClass.
     * </pre>
     *
     * <code>optional bool is_skylark = 10;</code>
     */
    boolean getIsSkylark();

    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect> 
        getSkylarkAttributeAspectsList();
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect getSkylarkAttributeAspects(int index);
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    int getSkylarkAttributeAspectsCount();
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder> 
        getSkylarkAttributeAspectsOrBuilderList();
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder getSkylarkAttributeAspectsOrBuilder(
        int index);

    /**
     * <pre>
     * Hash encapsulating the behavior of this Skylark rule. Any change to this
     * rule's definition that could change its behavior will be reflected here.
     * </pre>
     *
     * <code>optional string skylark_environment_hash_code = 12;</code>
     */
    boolean hasSkylarkEnvironmentHashCode();
    /**
     * <pre>
     * Hash encapsulating the behavior of this Skylark rule. Any change to this
     * rule's definition that could change its behavior will be reflected here.
     * </pre>
     *
     * <code>optional string skylark_environment_hash_code = 12;</code>
     */
    java.lang.String getSkylarkEnvironmentHashCode();
    /**
     * <pre>
     * Hash encapsulating the behavior of this Skylark rule. Any change to this
     * rule's definition that could change its behavior will be reflected here.
     * </pre>
     *
     * <code>optional string skylark_environment_hash_code = 12;</code>
     */
    com.google.protobuf.ByteString
        getSkylarkEnvironmentHashCodeBytes();
  }
  /**
   * <pre>
   * A rule from a BUILD file (e.g., cc_library, java_binary).  The rule class
   * is the actual name of the rule (e.g., cc_library) and the name is the full
   * label of the rule (e.g., //foo/bar:baz).
   * </pre>
   *
   * Protobuf type {@code blaze_query.Rule}
   */
  public  static final class Rule extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.Rule)
      RuleOrBuilder {
    // Use Rule.newBuilder() to construct.
    private Rule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Rule() {
      name_ = "";
      ruleClass_ = "";
      location_ = "";
      attribute_ = java.util.Collections.emptyList();
      ruleInput_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      ruleOutput_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      defaultSetting_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      publicByDefault_ = false;
      isSkylark_ = false;
      skylarkAttributeAspects_ = java.util.Collections.emptyList();
      skylarkEnvironmentHashCode_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Rule(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              ruleClass_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              location_ = bs;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                attribute_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute>();
                mutable_bitField0_ |= 0x00000008;
              }
              attribute_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                ruleInput_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              ruleInput_.add(bs);
              break;
            }
            case 50: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                ruleOutput_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              ruleOutput_.add(bs);
              break;
            }
            case 58: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                defaultSetting_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000040;
              }
              defaultSetting_.add(bs);
              break;
            }
            case 66: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = dEPRECATEDParseableLocation_.toBuilder();
              }
              dEPRECATEDParseableLocation_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dEPRECATEDParseableLocation_);
                dEPRECATEDParseableLocation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 72: {
              bitField0_ |= 0x00000010;
              publicByDefault_ = input.readBool();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000020;
              isSkylark_ = input.readBool();
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                skylarkAttributeAspects_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect>();
                mutable_bitField0_ |= 0x00000400;
              }
              skylarkAttributeAspects_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.PARSER, extensionRegistry));
              break;
            }
            case 98: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000040;
              skylarkEnvironmentHashCode_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          attribute_ = java.util.Collections.unmodifiableList(attribute_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          ruleInput_ = ruleInput_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          ruleOutput_ = ruleOutput_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          defaultSetting_ = defaultSetting_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          skylarkAttributeAspects_ = java.util.Collections.unmodifiableList(skylarkAttributeAspects_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Rule_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Rule_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * The name of the rule
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The name of the rule
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the rule
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RULE_CLASS_FIELD_NUMBER = 2;
    private volatile java.lang.Object ruleClass_;
    /**
     * <pre>
     * The rule class (e.g., java_library)
     * </pre>
     *
     * <code>required string rule_class = 2;</code>
     */
    public boolean hasRuleClass() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * The rule class (e.g., java_library)
     * </pre>
     *
     * <code>required string rule_class = 2;</code>
     */
    public java.lang.String getRuleClass() {
      java.lang.Object ref = ruleClass_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          ruleClass_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The rule class (e.g., java_library)
     * </pre>
     *
     * <code>required string rule_class = 2;</code>
     */
    public com.google.protobuf.ByteString
        getRuleClassBytes() {
      java.lang.Object ref = ruleClass_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ruleClass_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOCATION_FIELD_NUMBER = 3;
    private volatile java.lang.Object location_;
    /**
     * <pre>
     * The BUILD file and line number of the rule.
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    public boolean hasLocation() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * The BUILD file and line number of the rule.
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    public java.lang.String getLocation() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          location_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The BUILD file and line number of the rule.
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    public com.google.protobuf.ByteString
        getLocationBytes() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        location_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ATTRIBUTE_FIELD_NUMBER = 4;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> attribute_;
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> getAttributeList() {
      return attribute_;
    }
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> 
        getAttributeOrBuilderList() {
      return attribute_;
    }
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    public int getAttributeCount() {
      return attribute_.size();
    }
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getAttribute(int index) {
      return attribute_.get(index);
    }
    /**
     * <pre>
     * All of the attributes that describe the rule.
     * </pre>
     *
     * <code>repeated .blaze_query.Attribute attribute = 4;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder getAttributeOrBuilder(
        int index) {
      return attribute_.get(index);
    }

    public static final int RULE_INPUT_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList ruleInput_;
    /**
     * <pre>
     * All of the inputs to the rule.  These are predecessors in the dependency
     * graph.  A rule_input for a rule should always be described as a
     * source_file in some package (either the rule's package or some other one).
     * </pre>
     *
     * <code>repeated string rule_input = 5;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getRuleInputList() {
      return ruleInput_;
    }
    /**
     * <pre>
     * All of the inputs to the rule.  These are predecessors in the dependency
     * graph.  A rule_input for a rule should always be described as a
     * source_file in some package (either the rule's package or some other one).
     * </pre>
     *
     * <code>repeated string rule_input = 5;</code>
     */
    public int getRuleInputCount() {
      return ruleInput_.size();
    }
    /**
     * <pre>
     * All of the inputs to the rule.  These are predecessors in the dependency
     * graph.  A rule_input for a rule should always be described as a
     * source_file in some package (either the rule's package or some other one).
     * </pre>
     *
     * <code>repeated string rule_input = 5;</code>
     */
    public java.lang.String getRuleInput(int index) {
      return ruleInput_.get(index);
    }
    /**
     * <pre>
     * All of the inputs to the rule.  These are predecessors in the dependency
     * graph.  A rule_input for a rule should always be described as a
     * source_file in some package (either the rule's package or some other one).
     * </pre>
     *
     * <code>repeated string rule_input = 5;</code>
     */
    public com.google.protobuf.ByteString
        getRuleInputBytes(int index) {
      return ruleInput_.getByteString(index);
    }

    public static final int RULE_OUTPUT_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList ruleOutput_;
    /**
     * <pre>
     * All of the outputs of the rule.  These are the successors in the
     * dependency graph.
     * </pre>
     *
     * <code>repeated string rule_output = 6;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getRuleOutputList() {
      return ruleOutput_;
    }
    /**
     * <pre>
     * All of the outputs of the rule.  These are the successors in the
     * dependency graph.
     * </pre>
     *
     * <code>repeated string rule_output = 6;</code>
     */
    public int getRuleOutputCount() {
      return ruleOutput_.size();
    }
    /**
     * <pre>
     * All of the outputs of the rule.  These are the successors in the
     * dependency graph.
     * </pre>
     *
     * <code>repeated string rule_output = 6;</code>
     */
    public java.lang.String getRuleOutput(int index) {
      return ruleOutput_.get(index);
    }
    /**
     * <pre>
     * All of the outputs of the rule.  These are the successors in the
     * dependency graph.
     * </pre>
     *
     * <code>repeated string rule_output = 6;</code>
     */
    public com.google.protobuf.ByteString
        getRuleOutputBytes(int index) {
      return ruleOutput_.getByteString(index);
    }

    public static final int DEFAULT_SETTING_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList defaultSetting_;
    /**
     * <pre>
     * The set of all default settings affecting this rule. The name of a default
     * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
     * types are:
     * - 'blaze': settings implemented in Blaze itself
     * </pre>
     *
     * <code>repeated string default_setting = 7;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getDefaultSettingList() {
      return defaultSetting_;
    }
    /**
     * <pre>
     * The set of all default settings affecting this rule. The name of a default
     * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
     * types are:
     * - 'blaze': settings implemented in Blaze itself
     * </pre>
     *
     * <code>repeated string default_setting = 7;</code>
     */
    public int getDefaultSettingCount() {
      return defaultSetting_.size();
    }
    /**
     * <pre>
     * The set of all default settings affecting this rule. The name of a default
     * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
     * types are:
     * - 'blaze': settings implemented in Blaze itself
     * </pre>
     *
     * <code>repeated string default_setting = 7;</code>
     */
    public java.lang.String getDefaultSetting(int index) {
      return defaultSetting_.get(index);
    }
    /**
     * <pre>
     * The set of all default settings affecting this rule. The name of a default
     * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
     * types are:
     * - 'blaze': settings implemented in Blaze itself
     * </pre>
     *
     * <code>repeated string default_setting = 7;</code>
     */
    public com.google.protobuf.ByteString
        getDefaultSettingBytes(int index) {
      return defaultSetting_.getByteString(index);
    }

    public static final int DEPRECATED_PARSEABLE_LOCATION_FIELD_NUMBER = 8;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDParseableLocation_;
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
     */
    public boolean hasDEPRECATEDParseableLocation() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation() {
      return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
    }
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder() {
      return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
    }

    public static final int PUBLIC_BY_DEFAULT_FIELD_NUMBER = 9;
    private boolean publicByDefault_;
    /**
     * <pre>
     * The rule's class's public by default value.
     * </pre>
     *
     * <code>optional bool public_by_default = 9;</code>
     */
    public boolean hasPublicByDefault() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <pre>
     * The rule's class's public by default value.
     * </pre>
     *
     * <code>optional bool public_by_default = 9;</code>
     */
    public boolean getPublicByDefault() {
      return publicByDefault_;
    }

    public static final int IS_SKYLARK_FIELD_NUMBER = 10;
    private boolean isSkylark_;
    /**
     * <pre>
     * If this rule is of a skylark-defined RuleClass.
     * </pre>
     *
     * <code>optional bool is_skylark = 10;</code>
     */
    public boolean hasIsSkylark() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <pre>
     * If this rule is of a skylark-defined RuleClass.
     * </pre>
     *
     * <code>optional bool is_skylark = 10;</code>
     */
    public boolean getIsSkylark() {
      return isSkylark_;
    }

    public static final int SKYLARK_ATTRIBUTE_ASPECTS_FIELD_NUMBER = 11;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect> skylarkAttributeAspects_;
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect> getSkylarkAttributeAspectsList() {
      return skylarkAttributeAspects_;
    }
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder> 
        getSkylarkAttributeAspectsOrBuilderList() {
      return skylarkAttributeAspects_;
    }
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    public int getSkylarkAttributeAspectsCount() {
      return skylarkAttributeAspects_.size();
    }
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect getSkylarkAttributeAspects(int index) {
      return skylarkAttributeAspects_.get(index);
    }
    /**
     * <pre>
     * List of Skylark aspects that this rule applies.
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder getSkylarkAttributeAspectsOrBuilder(
        int index) {
      return skylarkAttributeAspects_.get(index);
    }

    public static final int SKYLARK_ENVIRONMENT_HASH_CODE_FIELD_NUMBER = 12;
    private volatile java.lang.Object skylarkEnvironmentHashCode_;
    /**
     * <pre>
     * Hash encapsulating the behavior of this Skylark rule. Any change to this
     * rule's definition that could change its behavior will be reflected here.
     * </pre>
     *
     * <code>optional string skylark_environment_hash_code = 12;</code>
     */
    public boolean hasSkylarkEnvironmentHashCode() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <pre>
     * Hash encapsulating the behavior of this Skylark rule. Any change to this
     * rule's definition that could change its behavior will be reflected here.
     * </pre>
     *
     * <code>optional string skylark_environment_hash_code = 12;</code>
     */
    public java.lang.String getSkylarkEnvironmentHashCode() {
      java.lang.Object ref = skylarkEnvironmentHashCode_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          skylarkEnvironmentHashCode_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Hash encapsulating the behavior of this Skylark rule. Any change to this
     * rule's definition that could change its behavior will be reflected here.
     * </pre>
     *
     * <code>optional string skylark_environment_hash_code = 12;</code>
     */
    public com.google.protobuf.ByteString
        getSkylarkEnvironmentHashCodeBytes() {
      java.lang.Object ref = skylarkEnvironmentHashCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        skylarkEnvironmentHashCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRuleClass()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getAttributeCount(); i++) {
        if (!getAttribute(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSkylarkAttributeAspectsCount(); i++) {
        if (!getSkylarkAttributeAspects(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ruleClass_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, location_);
      }
      for (int i = 0; i < attribute_.size(); i++) {
        output.writeMessage(4, attribute_.get(i));
      }
      for (int i = 0; i < ruleInput_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, ruleInput_.getRaw(i));
      }
      for (int i = 0; i < ruleOutput_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, ruleOutput_.getRaw(i));
      }
      for (int i = 0; i < defaultSetting_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, defaultSetting_.getRaw(i));
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(8, getDEPRECATEDParseableLocation());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(9, publicByDefault_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(10, isSkylark_);
      }
      for (int i = 0; i < skylarkAttributeAspects_.size(); i++) {
        output.writeMessage(11, skylarkAttributeAspects_.get(i));
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, skylarkEnvironmentHashCode_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ruleClass_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, location_);
      }
      for (int i = 0; i < attribute_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, attribute_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < ruleInput_.size(); i++) {
          dataSize += computeStringSizeNoTag(ruleInput_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getRuleInputList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < ruleOutput_.size(); i++) {
          dataSize += computeStringSizeNoTag(ruleOutput_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getRuleOutputList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < defaultSetting_.size(); i++) {
          dataSize += computeStringSizeNoTag(defaultSetting_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDefaultSettingList().size();
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getDEPRECATEDParseableLocation());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, publicByDefault_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, isSkylark_);
      }
      for (int i = 0; i < skylarkAttributeAspects_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, skylarkAttributeAspects_.get(i));
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, skylarkEnvironmentHashCode_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule) obj;

      boolean result = true;
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && (hasRuleClass() == other.hasRuleClass());
      if (hasRuleClass()) {
        result = result && getRuleClass()
            .equals(other.getRuleClass());
      }
      result = result && (hasLocation() == other.hasLocation());
      if (hasLocation()) {
        result = result && getLocation()
            .equals(other.getLocation());
      }
      result = result && getAttributeList()
          .equals(other.getAttributeList());
      result = result && getRuleInputList()
          .equals(other.getRuleInputList());
      result = result && getRuleOutputList()
          .equals(other.getRuleOutputList());
      result = result && getDefaultSettingList()
          .equals(other.getDefaultSettingList());
      result = result && (hasDEPRECATEDParseableLocation() == other.hasDEPRECATEDParseableLocation());
      if (hasDEPRECATEDParseableLocation()) {
        result = result && getDEPRECATEDParseableLocation()
            .equals(other.getDEPRECATEDParseableLocation());
      }
      result = result && (hasPublicByDefault() == other.hasPublicByDefault());
      if (hasPublicByDefault()) {
        result = result && (getPublicByDefault()
            == other.getPublicByDefault());
      }
      result = result && (hasIsSkylark() == other.hasIsSkylark());
      if (hasIsSkylark()) {
        result = result && (getIsSkylark()
            == other.getIsSkylark());
      }
      result = result && getSkylarkAttributeAspectsList()
          .equals(other.getSkylarkAttributeAspectsList());
      result = result && (hasSkylarkEnvironmentHashCode() == other.hasSkylarkEnvironmentHashCode());
      if (hasSkylarkEnvironmentHashCode()) {
        result = result && getSkylarkEnvironmentHashCode()
            .equals(other.getSkylarkEnvironmentHashCode());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasRuleClass()) {
        hash = (37 * hash) + RULE_CLASS_FIELD_NUMBER;
        hash = (53 * hash) + getRuleClass().hashCode();
      }
      if (hasLocation()) {
        hash = (37 * hash) + LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getLocation().hashCode();
      }
      if (getAttributeCount() > 0) {
        hash = (37 * hash) + ATTRIBUTE_FIELD_NUMBER;
        hash = (53 * hash) + getAttributeList().hashCode();
      }
      if (getRuleInputCount() > 0) {
        hash = (37 * hash) + RULE_INPUT_FIELD_NUMBER;
        hash = (53 * hash) + getRuleInputList().hashCode();
      }
      if (getRuleOutputCount() > 0) {
        hash = (37 * hash) + RULE_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getRuleOutputList().hashCode();
      }
      if (getDefaultSettingCount() > 0) {
        hash = (37 * hash) + DEFAULT_SETTING_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultSettingList().hashCode();
      }
      if (hasDEPRECATEDParseableLocation()) {
        hash = (37 * hash) + DEPRECATED_PARSEABLE_LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getDEPRECATEDParseableLocation().hashCode();
      }
      if (hasPublicByDefault()) {
        hash = (37 * hash) + PUBLIC_BY_DEFAULT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPublicByDefault());
      }
      if (hasIsSkylark()) {
        hash = (37 * hash) + IS_SKYLARK_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsSkylark());
      }
      if (getSkylarkAttributeAspectsCount() > 0) {
        hash = (37 * hash) + SKYLARK_ATTRIBUTE_ASPECTS_FIELD_NUMBER;
        hash = (53 * hash) + getSkylarkAttributeAspectsList().hashCode();
      }
      if (hasSkylarkEnvironmentHashCode()) {
        hash = (37 * hash) + SKYLARK_ENVIRONMENT_HASH_CODE_FIELD_NUMBER;
        hash = (53 * hash) + getSkylarkEnvironmentHashCode().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.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);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A rule from a BUILD file (e.g., cc_library, java_binary).  The rule class
     * is the actual name of the rule (e.g., cc_library) and the name is the full
     * label of the rule (e.g., //foo/bar:baz).
     * </pre>
     *
     * Protobuf type {@code blaze_query.Rule}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.Rule)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Rule_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Rule_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAttributeFieldBuilder();
          getDEPRECATEDParseableLocationFieldBuilder();
          getSkylarkAttributeAspectsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        ruleClass_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        location_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        if (attributeBuilder_ == null) {
          attribute_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          attributeBuilder_.clear();
        }
        ruleInput_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        ruleOutput_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        defaultSetting_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = null;
        } else {
          dEPRECATEDParseableLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        publicByDefault_ = false;
        bitField0_ = (bitField0_ & ~0x00000100);
        isSkylark_ = false;
        bitField0_ = (bitField0_ & ~0x00000200);
        if (skylarkAttributeAspectsBuilder_ == null) {
          skylarkAttributeAspects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
        } else {
          skylarkAttributeAspectsBuilder_.clear();
        }
        skylarkEnvironmentHashCode_ = "";
        bitField0_ = (bitField0_ & ~0x00000800);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Rule_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.ruleClass_ = ruleClass_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.location_ = location_;
        if (attributeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            attribute_ = java.util.Collections.unmodifiableList(attribute_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.attribute_ = attribute_;
        } else {
          result.attribute_ = attributeBuilder_.build();
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          ruleInput_ = ruleInput_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.ruleInput_ = ruleInput_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          ruleOutput_ = ruleOutput_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.ruleOutput_ = ruleOutput_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          defaultSetting_ = defaultSetting_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.defaultSetting_ = defaultSetting_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000008;
        }
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          result.dEPRECATEDParseableLocation_ = dEPRECATEDParseableLocation_;
        } else {
          result.dEPRECATEDParseableLocation_ = dEPRECATEDParseableLocationBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000010;
        }
        result.publicByDefault_ = publicByDefault_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000020;
        }
        result.isSkylark_ = isSkylark_;
        if (skylarkAttributeAspectsBuilder_ == null) {
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            skylarkAttributeAspects_ = java.util.Collections.unmodifiableList(skylarkAttributeAspects_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.skylarkAttributeAspects_ = skylarkAttributeAspects_;
        } else {
          result.skylarkAttributeAspects_ = skylarkAttributeAspectsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
          to_bitField0_ |= 0x00000040;
        }
        result.skylarkEnvironmentHashCode_ = skylarkEnvironmentHashCode_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasRuleClass()) {
          bitField0_ |= 0x00000002;
          ruleClass_ = other.ruleClass_;
          onChanged();
        }
        if (other.hasLocation()) {
          bitField0_ |= 0x00000004;
          location_ = other.location_;
          onChanged();
        }
        if (attributeBuilder_ == null) {
          if (!other.attribute_.isEmpty()) {
            if (attribute_.isEmpty()) {
              attribute_ = other.attribute_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureAttributeIsMutable();
              attribute_.addAll(other.attribute_);
            }
            onChanged();
          }
        } else {
          if (!other.attribute_.isEmpty()) {
            if (attributeBuilder_.isEmpty()) {
              attributeBuilder_.dispose();
              attributeBuilder_ = null;
              attribute_ = other.attribute_;
              bitField0_ = (bitField0_ & ~0x00000008);
              attributeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttributeFieldBuilder() : null;
            } else {
              attributeBuilder_.addAllMessages(other.attribute_);
            }
          }
        }
        if (!other.ruleInput_.isEmpty()) {
          if (ruleInput_.isEmpty()) {
            ruleInput_ = other.ruleInput_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureRuleInputIsMutable();
            ruleInput_.addAll(other.ruleInput_);
          }
          onChanged();
        }
        if (!other.ruleOutput_.isEmpty()) {
          if (ruleOutput_.isEmpty()) {
            ruleOutput_ = other.ruleOutput_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureRuleOutputIsMutable();
            ruleOutput_.addAll(other.ruleOutput_);
          }
          onChanged();
        }
        if (!other.defaultSetting_.isEmpty()) {
          if (defaultSetting_.isEmpty()) {
            defaultSetting_ = other.defaultSetting_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureDefaultSettingIsMutable();
            defaultSetting_.addAll(other.defaultSetting_);
          }
          onChanged();
        }
        if (other.hasDEPRECATEDParseableLocation()) {
          mergeDEPRECATEDParseableLocation(other.getDEPRECATEDParseableLocation());
        }
        if (other.hasPublicByDefault()) {
          setPublicByDefault(other.getPublicByDefault());
        }
        if (other.hasIsSkylark()) {
          setIsSkylark(other.getIsSkylark());
        }
        if (skylarkAttributeAspectsBuilder_ == null) {
          if (!other.skylarkAttributeAspects_.isEmpty()) {
            if (skylarkAttributeAspects_.isEmpty()) {
              skylarkAttributeAspects_ = other.skylarkAttributeAspects_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureSkylarkAttributeAspectsIsMutable();
              skylarkAttributeAspects_.addAll(other.skylarkAttributeAspects_);
            }
            onChanged();
          }
        } else {
          if (!other.skylarkAttributeAspects_.isEmpty()) {
            if (skylarkAttributeAspectsBuilder_.isEmpty()) {
              skylarkAttributeAspectsBuilder_.dispose();
              skylarkAttributeAspectsBuilder_ = null;
              skylarkAttributeAspects_ = other.skylarkAttributeAspects_;
              bitField0_ = (bitField0_ & ~0x00000400);
              skylarkAttributeAspectsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSkylarkAttributeAspectsFieldBuilder() : null;
            } else {
              skylarkAttributeAspectsBuilder_.addAllMessages(other.skylarkAttributeAspects_);
            }
          }
        }
        if (other.hasSkylarkEnvironmentHashCode()) {
          bitField0_ |= 0x00000800;
          skylarkEnvironmentHashCode_ = other.skylarkEnvironmentHashCode_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          return false;
        }
        if (!hasRuleClass()) {
          return false;
        }
        for (int i = 0; i < getAttributeCount(); i++) {
          if (!getAttribute(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getSkylarkAttributeAspectsCount(); i++) {
          if (!getSkylarkAttributeAspects(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The name of the rule
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The name of the rule
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the rule
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the rule
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the rule
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the rule
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object ruleClass_ = "";
      /**
       * <pre>
       * The rule class (e.g., java_library)
       * </pre>
       *
       * <code>required string rule_class = 2;</code>
       */
      public boolean hasRuleClass() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * The rule class (e.g., java_library)
       * </pre>
       *
       * <code>required string rule_class = 2;</code>
       */
      public java.lang.String getRuleClass() {
        java.lang.Object ref = ruleClass_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            ruleClass_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The rule class (e.g., java_library)
       * </pre>
       *
       * <code>required string rule_class = 2;</code>
       */
      public com.google.protobuf.ByteString
          getRuleClassBytes() {
        java.lang.Object ref = ruleClass_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ruleClass_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The rule class (e.g., java_library)
       * </pre>
       *
       * <code>required string rule_class = 2;</code>
       */
      public Builder setRuleClass(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        ruleClass_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The rule class (e.g., java_library)
       * </pre>
       *
       * <code>required string rule_class = 2;</code>
       */
      public Builder clearRuleClass() {
        bitField0_ = (bitField0_ & ~0x00000002);
        ruleClass_ = getDefaultInstance().getRuleClass();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The rule class (e.g., java_library)
       * </pre>
       *
       * <code>required string rule_class = 2;</code>
       */
      public Builder setRuleClassBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        ruleClass_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object location_ = "";
      /**
       * <pre>
       * The BUILD file and line number of the rule.
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public boolean hasLocation() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * The BUILD file and line number of the rule.
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public java.lang.String getLocation() {
        java.lang.Object ref = location_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            location_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The BUILD file and line number of the rule.
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public com.google.protobuf.ByteString
          getLocationBytes() {
        java.lang.Object ref = location_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          location_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The BUILD file and line number of the rule.
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public Builder setLocation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        location_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The BUILD file and line number of the rule.
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public Builder clearLocation() {
        bitField0_ = (bitField0_ & ~0x00000004);
        location_ = getDefaultInstance().getLocation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The BUILD file and line number of the rule.
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public Builder setLocationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        location_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> attribute_ =
        java.util.Collections.emptyList();
      private void ensureAttributeIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          attribute_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute>(attribute_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> attributeBuilder_;

      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> getAttributeList() {
        if (attributeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(attribute_);
        } else {
          return attributeBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public int getAttributeCount() {
        if (attributeBuilder_ == null) {
          return attribute_.size();
        } else {
          return attributeBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getAttribute(int index) {
        if (attributeBuilder_ == null) {
          return attribute_.get(index);
        } else {
          return attributeBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder setAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.set(index, value);
          onChanged();
        } else {
          attributeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder setAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.set(index, builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder addAttribute(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.add(value);
          onChanged();
        } else {
          attributeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder addAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.add(index, value);
          onChanged();
        } else {
          attributeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder addAttribute(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.add(builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder addAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.add(index, builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder addAllAttribute(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> values) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, attribute_);
          onChanged();
        } else {
          attributeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder clearAttribute() {
        if (attributeBuilder_ == null) {
          attribute_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          attributeBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public Builder removeAttribute(int index) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.remove(index);
          onChanged();
        } else {
          attributeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder getAttributeBuilder(
          int index) {
        return getAttributeFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder getAttributeOrBuilder(
          int index) {
        if (attributeBuilder_ == null) {
          return attribute_.get(index);  } else {
          return attributeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> 
           getAttributeOrBuilderList() {
        if (attributeBuilder_ != null) {
          return attributeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(attribute_);
        }
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder addAttributeBuilder() {
        return getAttributeFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.getDefaultInstance());
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder addAttributeBuilder(
          int index) {
        return getAttributeFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.getDefaultInstance());
      }
      /**
       * <pre>
       * All of the attributes that describe the rule.
       * </pre>
       *
       * <code>repeated .blaze_query.Attribute attribute = 4;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder> 
           getAttributeBuilderList() {
        return getAttributeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> 
          getAttributeFieldBuilder() {
        if (attributeBuilder_ == null) {
          attributeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder>(
                  attribute_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          attribute_ = null;
        }
        return attributeBuilder_;
      }

      private com.google.protobuf.LazyStringList ruleInput_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureRuleInputIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          ruleInput_ = new com.google.protobuf.LazyStringArrayList(ruleInput_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getRuleInputList() {
        return ruleInput_.getUnmodifiableView();
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public int getRuleInputCount() {
        return ruleInput_.size();
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public java.lang.String getRuleInput(int index) {
        return ruleInput_.get(index);
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public com.google.protobuf.ByteString
          getRuleInputBytes(int index) {
        return ruleInput_.getByteString(index);
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public Builder setRuleInput(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRuleInputIsMutable();
        ruleInput_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public Builder addRuleInput(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRuleInputIsMutable();
        ruleInput_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public Builder addAllRuleInput(
          java.lang.Iterable<java.lang.String> values) {
        ensureRuleInputIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, ruleInput_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public Builder clearRuleInput() {
        ruleInput_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * All of the inputs to the rule.  These are predecessors in the dependency
       * graph.  A rule_input for a rule should always be described as a
       * source_file in some package (either the rule's package or some other one).
       * </pre>
       *
       * <code>repeated string rule_input = 5;</code>
       */
      public Builder addRuleInputBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRuleInputIsMutable();
        ruleInput_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList ruleOutput_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureRuleOutputIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          ruleOutput_ = new com.google.protobuf.LazyStringArrayList(ruleOutput_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getRuleOutputList() {
        return ruleOutput_.getUnmodifiableView();
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public int getRuleOutputCount() {
        return ruleOutput_.size();
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public java.lang.String getRuleOutput(int index) {
        return ruleOutput_.get(index);
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public com.google.protobuf.ByteString
          getRuleOutputBytes(int index) {
        return ruleOutput_.getByteString(index);
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public Builder setRuleOutput(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRuleOutputIsMutable();
        ruleOutput_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public Builder addRuleOutput(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRuleOutputIsMutable();
        ruleOutput_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public Builder addAllRuleOutput(
          java.lang.Iterable<java.lang.String> values) {
        ensureRuleOutputIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, ruleOutput_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public Builder clearRuleOutput() {
        ruleOutput_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * All of the outputs of the rule.  These are the successors in the
       * dependency graph.
       * </pre>
       *
       * <code>repeated string rule_output = 6;</code>
       */
      public Builder addRuleOutputBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRuleOutputIsMutable();
        ruleOutput_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList defaultSetting_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDefaultSettingIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          defaultSetting_ = new com.google.protobuf.LazyStringArrayList(defaultSetting_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getDefaultSettingList() {
        return defaultSetting_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public int getDefaultSettingCount() {
        return defaultSetting_.size();
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public java.lang.String getDefaultSetting(int index) {
        return defaultSetting_.get(index);
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public com.google.protobuf.ByteString
          getDefaultSettingBytes(int index) {
        return defaultSetting_.getByteString(index);
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public Builder setDefaultSetting(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDefaultSettingIsMutable();
        defaultSetting_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public Builder addDefaultSetting(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDefaultSettingIsMutable();
        defaultSetting_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public Builder addAllDefaultSetting(
          java.lang.Iterable<java.lang.String> values) {
        ensureDefaultSettingIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, defaultSetting_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public Builder clearDefaultSetting() {
        defaultSetting_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The set of all default settings affecting this rule. The name of a default
       * setting is "&lt;setting type&gt;_&lt;setting name&gt;". There currently defined setting
       * types are:
       * - 'blaze': settings implemented in Blaze itself
       * </pre>
       *
       * <code>repeated string default_setting = 7;</code>
       */
      public Builder addDefaultSettingBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDefaultSettingIsMutable();
        defaultSetting_.add(value);
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDParseableLocation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> dEPRECATEDParseableLocationBuilder_;
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      public boolean hasDEPRECATEDParseableLocation() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
        } else {
          return dEPRECATEDParseableLocationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      public Builder setDEPRECATEDParseableLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dEPRECATEDParseableLocation_ = value;
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      public Builder setDEPRECATEDParseableLocation(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder builderForValue) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = builderForValue.build();
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      public Builder mergeDEPRECATEDParseableLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080) &&
              dEPRECATEDParseableLocation_ != null &&
              dEPRECATEDParseableLocation_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance()) {
            dEPRECATEDParseableLocation_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.newBuilder(dEPRECATEDParseableLocation_).mergeFrom(value).buildPartial();
          } else {
            dEPRECATEDParseableLocation_ = value;
          }
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      public Builder clearDEPRECATEDParseableLocation() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = null;
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder getDEPRECATEDParseableLocationBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getDEPRECATEDParseableLocationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder() {
        if (dEPRECATEDParseableLocationBuilder_ != null) {
          return dEPRECATEDParseableLocationBuilder_.getMessageOrBuilder();
        } else {
          return dEPRECATEDParseableLocation_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
        }
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> 
          getDEPRECATEDParseableLocationFieldBuilder() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder>(
                  getDEPRECATEDParseableLocation(),
                  getParentForChildren(),
                  isClean());
          dEPRECATEDParseableLocation_ = null;
        }
        return dEPRECATEDParseableLocationBuilder_;
      }

      private boolean publicByDefault_ ;
      /**
       * <pre>
       * The rule's class's public by default value.
       * </pre>
       *
       * <code>optional bool public_by_default = 9;</code>
       */
      public boolean hasPublicByDefault() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <pre>
       * The rule's class's public by default value.
       * </pre>
       *
       * <code>optional bool public_by_default = 9;</code>
       */
      public boolean getPublicByDefault() {
        return publicByDefault_;
      }
      /**
       * <pre>
       * The rule's class's public by default value.
       * </pre>
       *
       * <code>optional bool public_by_default = 9;</code>
       */
      public Builder setPublicByDefault(boolean value) {
        bitField0_ |= 0x00000100;
        publicByDefault_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The rule's class's public by default value.
       * </pre>
       *
       * <code>optional bool public_by_default = 9;</code>
       */
      public Builder clearPublicByDefault() {
        bitField0_ = (bitField0_ & ~0x00000100);
        publicByDefault_ = false;
        onChanged();
        return this;
      }

      private boolean isSkylark_ ;
      /**
       * <pre>
       * If this rule is of a skylark-defined RuleClass.
       * </pre>
       *
       * <code>optional bool is_skylark = 10;</code>
       */
      public boolean hasIsSkylark() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <pre>
       * If this rule is of a skylark-defined RuleClass.
       * </pre>
       *
       * <code>optional bool is_skylark = 10;</code>
       */
      public boolean getIsSkylark() {
        return isSkylark_;
      }
      /**
       * <pre>
       * If this rule is of a skylark-defined RuleClass.
       * </pre>
       *
       * <code>optional bool is_skylark = 10;</code>
       */
      public Builder setIsSkylark(boolean value) {
        bitField0_ |= 0x00000200;
        isSkylark_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If this rule is of a skylark-defined RuleClass.
       * </pre>
       *
       * <code>optional bool is_skylark = 10;</code>
       */
      public Builder clearIsSkylark() {
        bitField0_ = (bitField0_ & ~0x00000200);
        isSkylark_ = false;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect> skylarkAttributeAspects_ =
        java.util.Collections.emptyList();
      private void ensureSkylarkAttributeAspectsIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          skylarkAttributeAspects_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect>(skylarkAttributeAspects_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder> skylarkAttributeAspectsBuilder_;

      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect> getSkylarkAttributeAspectsList() {
        if (skylarkAttributeAspectsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(skylarkAttributeAspects_);
        } else {
          return skylarkAttributeAspectsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public int getSkylarkAttributeAspectsCount() {
        if (skylarkAttributeAspectsBuilder_ == null) {
          return skylarkAttributeAspects_.size();
        } else {
          return skylarkAttributeAspectsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect getSkylarkAttributeAspects(int index) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          return skylarkAttributeAspects_.get(index);
        } else {
          return skylarkAttributeAspectsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder setSkylarkAttributeAspects(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect value) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSkylarkAttributeAspectsIsMutable();
          skylarkAttributeAspects_.set(index, value);
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder setSkylarkAttributeAspects(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder builderForValue) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          ensureSkylarkAttributeAspectsIsMutable();
          skylarkAttributeAspects_.set(index, builderForValue.build());
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder addSkylarkAttributeAspects(com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect value) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSkylarkAttributeAspectsIsMutable();
          skylarkAttributeAspects_.add(value);
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder addSkylarkAttributeAspects(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect value) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSkylarkAttributeAspectsIsMutable();
          skylarkAttributeAspects_.add(index, value);
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder addSkylarkAttributeAspects(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder builderForValue) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          ensureSkylarkAttributeAspectsIsMutable();
          skylarkAttributeAspects_.add(builderForValue.build());
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder addSkylarkAttributeAspects(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder builderForValue) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          ensureSkylarkAttributeAspectsIsMutable();
          skylarkAttributeAspects_.add(index, builderForValue.build());
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder addAllSkylarkAttributeAspects(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect> values) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          ensureSkylarkAttributeAspectsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, skylarkAttributeAspects_);
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder clearSkylarkAttributeAspects() {
        if (skylarkAttributeAspectsBuilder_ == null) {
          skylarkAttributeAspects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public Builder removeSkylarkAttributeAspects(int index) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          ensureSkylarkAttributeAspectsIsMutable();
          skylarkAttributeAspects_.remove(index);
          onChanged();
        } else {
          skylarkAttributeAspectsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder getSkylarkAttributeAspectsBuilder(
          int index) {
        return getSkylarkAttributeAspectsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder getSkylarkAttributeAspectsOrBuilder(
          int index) {
        if (skylarkAttributeAspectsBuilder_ == null) {
          return skylarkAttributeAspects_.get(index);  } else {
          return skylarkAttributeAspectsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder> 
           getSkylarkAttributeAspectsOrBuilderList() {
        if (skylarkAttributeAspectsBuilder_ != null) {
          return skylarkAttributeAspectsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(skylarkAttributeAspects_);
        }
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder addSkylarkAttributeAspectsBuilder() {
        return getSkylarkAttributeAspectsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.getDefaultInstance());
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder addSkylarkAttributeAspectsBuilder(
          int index) {
        return getSkylarkAttributeAspectsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.getDefaultInstance());
      }
      /**
       * <pre>
       * List of Skylark aspects that this rule applies.
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeAspect skylark_attribute_aspects = 11;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder> 
           getSkylarkAttributeAspectsBuilderList() {
        return getSkylarkAttributeAspectsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder> 
          getSkylarkAttributeAspectsFieldBuilder() {
        if (skylarkAttributeAspectsBuilder_ == null) {
          skylarkAttributeAspectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder>(
                  skylarkAttributeAspects_,
                  ((bitField0_ & 0x00000400) == 0x00000400),
                  getParentForChildren(),
                  isClean());
          skylarkAttributeAspects_ = null;
        }
        return skylarkAttributeAspectsBuilder_;
      }

      private java.lang.Object skylarkEnvironmentHashCode_ = "";
      /**
       * <pre>
       * Hash encapsulating the behavior of this Skylark rule. Any change to this
       * rule's definition that could change its behavior will be reflected here.
       * </pre>
       *
       * <code>optional string skylark_environment_hash_code = 12;</code>
       */
      public boolean hasSkylarkEnvironmentHashCode() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <pre>
       * Hash encapsulating the behavior of this Skylark rule. Any change to this
       * rule's definition that could change its behavior will be reflected here.
       * </pre>
       *
       * <code>optional string skylark_environment_hash_code = 12;</code>
       */
      public java.lang.String getSkylarkEnvironmentHashCode() {
        java.lang.Object ref = skylarkEnvironmentHashCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            skylarkEnvironmentHashCode_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Hash encapsulating the behavior of this Skylark rule. Any change to this
       * rule's definition that could change its behavior will be reflected here.
       * </pre>
       *
       * <code>optional string skylark_environment_hash_code = 12;</code>
       */
      public com.google.protobuf.ByteString
          getSkylarkEnvironmentHashCodeBytes() {
        java.lang.Object ref = skylarkEnvironmentHashCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          skylarkEnvironmentHashCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Hash encapsulating the behavior of this Skylark rule. Any change to this
       * rule's definition that could change its behavior will be reflected here.
       * </pre>
       *
       * <code>optional string skylark_environment_hash_code = 12;</code>
       */
      public Builder setSkylarkEnvironmentHashCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        skylarkEnvironmentHashCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Hash encapsulating the behavior of this Skylark rule. Any change to this
       * rule's definition that could change its behavior will be reflected here.
       * </pre>
       *
       * <code>optional string skylark_environment_hash_code = 12;</code>
       */
      public Builder clearSkylarkEnvironmentHashCode() {
        bitField0_ = (bitField0_ & ~0x00000800);
        skylarkEnvironmentHashCode_ = getDefaultInstance().getSkylarkEnvironmentHashCode();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Hash encapsulating the behavior of this Skylark rule. Any change to this
       * rule's definition that could change its behavior will be reflected here.
       * </pre>
       *
       * <code>optional string skylark_environment_hash_code = 12;</code>
       */
      public Builder setSkylarkEnvironmentHashCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000800;
        skylarkEnvironmentHashCode_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


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

    // @@protoc_insertion_point(class_scope:blaze_query.Rule)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AttributeAspectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.AttributeAspect)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string attribute_name = 1;</code>
     */
    boolean hasAttributeName();
    /**
     * <code>required string attribute_name = 1;</code>
     */
    java.lang.String getAttributeName();
    /**
     * <code>required string attribute_name = 1;</code>
     */
    com.google.protobuf.ByteString
        getAttributeNameBytes();

    /**
     * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
     */
    boolean hasAspect();
    /**
     * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect getAspect();
    /**
     * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspectOrBuilder getAspectOrBuilder();
  }
  /**
   * <pre>
   * A pairing of attribute name and a Skylark aspect that is applied to that attribute.
   * </pre>
   *
   * Protobuf type {@code blaze_query.AttributeAspect}
   */
  public  static final class AttributeAspect extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.AttributeAspect)
      AttributeAspectOrBuilder {
    // Use AttributeAspect.newBuilder() to construct.
    private AttributeAspect(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AttributeAspect() {
      attributeName_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AttributeAspect(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              attributeName_ = bs;
              break;
            }
            case 18: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = aspect_.toBuilder();
              }
              aspect_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(aspect_);
                aspect_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeAspect_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeAspect_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder.class);
    }

    private int bitField0_;
    public static final int ATTRIBUTE_NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object attributeName_;
    /**
     * <code>required string attribute_name = 1;</code>
     */
    public boolean hasAttributeName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string attribute_name = 1;</code>
     */
    public java.lang.String getAttributeName() {
      java.lang.Object ref = attributeName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          attributeName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string attribute_name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getAttributeNameBytes() {
      java.lang.Object ref = attributeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        attributeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ASPECT_FIELD_NUMBER = 2;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect aspect_;
    /**
     * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
     */
    public boolean hasAspect() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect getAspect() {
      return aspect_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.getDefaultInstance() : aspect_;
    }
    /**
     * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspectOrBuilder getAspectOrBuilder() {
      return aspect_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.getDefaultInstance() : aspect_;
    }

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

      if (!hasAttributeName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAspect()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getAspect().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, attributeName_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, getAspect());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, attributeName_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getAspect());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect) obj;

      boolean result = true;
      result = result && (hasAttributeName() == other.hasAttributeName());
      if (hasAttributeName()) {
        result = result && getAttributeName()
            .equals(other.getAttributeName());
      }
      result = result && (hasAspect() == other.hasAspect());
      if (hasAspect()) {
        result = result && getAspect()
            .equals(other.getAspect());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasAttributeName()) {
        hash = (37 * hash) + ATTRIBUTE_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getAttributeName().hashCode();
      }
      if (hasAspect()) {
        hash = (37 * hash) + ASPECT_FIELD_NUMBER;
        hash = (53 * hash) + getAspect().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A pairing of attribute name and a Skylark aspect that is applied to that attribute.
     * </pre>
     *
     * Protobuf type {@code blaze_query.AttributeAspect}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.AttributeAspect)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeAspect_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeAspect_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAspectFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        attributeName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (aspectBuilder_ == null) {
          aspect_ = null;
        } else {
          aspectBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeAspect_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.attributeName_ = attributeName_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (aspectBuilder_ == null) {
          result.aspect_ = aspect_;
        } else {
          result.aspect_ = aspectBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect.getDefaultInstance()) return this;
        if (other.hasAttributeName()) {
          bitField0_ |= 0x00000001;
          attributeName_ = other.attributeName_;
          onChanged();
        }
        if (other.hasAspect()) {
          mergeAspect(other.getAspect());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        if (!hasAttributeName()) {
          return false;
        }
        if (!hasAspect()) {
          return false;
        }
        if (!getAspect().isInitialized()) {
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object attributeName_ = "";
      /**
       * <code>required string attribute_name = 1;</code>
       */
      public boolean hasAttributeName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string attribute_name = 1;</code>
       */
      public java.lang.String getAttributeName() {
        java.lang.Object ref = attributeName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            attributeName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string attribute_name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getAttributeNameBytes() {
        java.lang.Object ref = attributeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          attributeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string attribute_name = 1;</code>
       */
      public Builder setAttributeName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        attributeName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string attribute_name = 1;</code>
       */
      public Builder clearAttributeName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        attributeName_ = getDefaultInstance().getAttributeName();
        onChanged();
        return this;
      }
      /**
       * <code>required string attribute_name = 1;</code>
       */
      public Builder setAttributeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        attributeName_ = value;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect aspect_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect, com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspectOrBuilder> aspectBuilder_;
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      public boolean hasAspect() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect getAspect() {
        if (aspectBuilder_ == null) {
          return aspect_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.getDefaultInstance() : aspect_;
        } else {
          return aspectBuilder_.getMessage();
        }
      }
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      public Builder setAspect(com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect value) {
        if (aspectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          aspect_ = value;
          onChanged();
        } else {
          aspectBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      public Builder setAspect(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.Builder builderForValue) {
        if (aspectBuilder_ == null) {
          aspect_ = builderForValue.build();
          onChanged();
        } else {
          aspectBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      public Builder mergeAspect(com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect value) {
        if (aspectBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              aspect_ != null &&
              aspect_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.getDefaultInstance()) {
            aspect_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.newBuilder(aspect_).mergeFrom(value).buildPartial();
          } else {
            aspect_ = value;
          }
          onChanged();
        } else {
          aspectBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      public Builder clearAspect() {
        if (aspectBuilder_ == null) {
          aspect_ = null;
          onChanged();
        } else {
          aspectBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.Builder getAspectBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAspectFieldBuilder().getBuilder();
      }
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspectOrBuilder getAspectOrBuilder() {
        if (aspectBuilder_ != null) {
          return aspectBuilder_.getMessageOrBuilder();
        } else {
          return aspect_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.getDefaultInstance() : aspect_;
        }
      }
      /**
       * <code>required .blaze_query.SkylarkAspect aspect = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect, com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspectOrBuilder> 
          getAspectFieldBuilder() {
        if (aspectBuilder_ == null) {
          aspectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect, com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspectOrBuilder>(
                  getAspect(),
                  getParentForChildren(),
                  isClean());
          aspect_ = null;
        }
        return aspectBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.AttributeAspect)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.AttributeAspect)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeAspect getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SkylarkAspectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.SkylarkAspect)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string extension_file_label = 1;</code>
     */
    boolean hasExtensionFileLabel();
    /**
     * <code>required string extension_file_label = 1;</code>
     */
    java.lang.String getExtensionFileLabel();
    /**
     * <code>required string extension_file_label = 1;</code>
     */
    com.google.protobuf.ByteString
        getExtensionFileLabelBytes();

    /**
     * <code>required string exported_name = 2;</code>
     */
    boolean hasExportedName();
    /**
     * <code>required string exported_name = 2;</code>
     */
    java.lang.String getExportedName();
    /**
     * <code>required string exported_name = 2;</code>
     */
    com.google.protobuf.ByteString
        getExportedNameBytes();

    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> 
        getAttributeList();
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getAttribute(int index);
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    int getAttributeCount();
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> 
        getAttributeOrBuilderList();
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder getAttributeOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Aspect defined in Skylark.
   * </pre>
   *
   * Protobuf type {@code blaze_query.SkylarkAspect}
   */
  public  static final class SkylarkAspect extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.SkylarkAspect)
      SkylarkAspectOrBuilder {
    // Use SkylarkAspect.newBuilder() to construct.
    private SkylarkAspect(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SkylarkAspect() {
      extensionFileLabel_ = "";
      exportedName_ = "";
      attribute_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SkylarkAspect(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              extensionFileLabel_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              exportedName_ = bs;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                attribute_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute>();
                mutable_bitField0_ |= 0x00000004;
              }
              attribute_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          attribute_ = java.util.Collections.unmodifiableList(attribute_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SkylarkAspect_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SkylarkAspect_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.Builder.class);
    }

    private int bitField0_;
    public static final int EXTENSION_FILE_LABEL_FIELD_NUMBER = 1;
    private volatile java.lang.Object extensionFileLabel_;
    /**
     * <code>required string extension_file_label = 1;</code>
     */
    public boolean hasExtensionFileLabel() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string extension_file_label = 1;</code>
     */
    public java.lang.String getExtensionFileLabel() {
      java.lang.Object ref = extensionFileLabel_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          extensionFileLabel_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string extension_file_label = 1;</code>
     */
    public com.google.protobuf.ByteString
        getExtensionFileLabelBytes() {
      java.lang.Object ref = extensionFileLabel_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        extensionFileLabel_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPORTED_NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object exportedName_;
    /**
     * <code>required string exported_name = 2;</code>
     */
    public boolean hasExportedName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string exported_name = 2;</code>
     */
    public java.lang.String getExportedName() {
      java.lang.Object ref = exportedName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          exportedName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string exported_name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getExportedNameBytes() {
      java.lang.Object ref = exportedName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        exportedName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ATTRIBUTE_FIELD_NUMBER = 3;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> attribute_;
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> getAttributeList() {
      return attribute_;
    }
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> 
        getAttributeOrBuilderList() {
      return attribute_;
    }
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    public int getAttributeCount() {
      return attribute_.size();
    }
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getAttribute(int index) {
      return attribute_.get(index);
    }
    /**
     * <code>repeated .blaze_query.Attribute attribute = 3;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder getAttributeOrBuilder(
        int index) {
      return attribute_.get(index);
    }

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

      if (!hasExtensionFileLabel()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExportedName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getAttributeCount(); i++) {
        if (!getAttribute(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, extensionFileLabel_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, exportedName_);
      }
      for (int i = 0; i < attribute_.size(); i++) {
        output.writeMessage(3, attribute_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, extensionFileLabel_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, exportedName_);
      }
      for (int i = 0; i < attribute_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, attribute_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect) obj;

      boolean result = true;
      result = result && (hasExtensionFileLabel() == other.hasExtensionFileLabel());
      if (hasExtensionFileLabel()) {
        result = result && getExtensionFileLabel()
            .equals(other.getExtensionFileLabel());
      }
      result = result && (hasExportedName() == other.hasExportedName());
      if (hasExportedName()) {
        result = result && getExportedName()
            .equals(other.getExportedName());
      }
      result = result && getAttributeList()
          .equals(other.getAttributeList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasExtensionFileLabel()) {
        hash = (37 * hash) + EXTENSION_FILE_LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getExtensionFileLabel().hashCode();
      }
      if (hasExportedName()) {
        hash = (37 * hash) + EXPORTED_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getExportedName().hashCode();
      }
      if (getAttributeCount() > 0) {
        hash = (37 * hash) + ATTRIBUTE_FIELD_NUMBER;
        hash = (53 * hash) + getAttributeList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Aspect defined in Skylark.
     * </pre>
     *
     * Protobuf type {@code blaze_query.SkylarkAspect}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.SkylarkAspect)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SkylarkAspect_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SkylarkAspect_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAttributeFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        extensionFileLabel_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        exportedName_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        if (attributeBuilder_ == null) {
          attribute_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          attributeBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SkylarkAspect_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.extensionFileLabel_ = extensionFileLabel_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.exportedName_ = exportedName_;
        if (attributeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            attribute_ = java.util.Collections.unmodifiableList(attribute_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.attribute_ = attribute_;
        } else {
          result.attribute_ = attributeBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect.getDefaultInstance()) return this;
        if (other.hasExtensionFileLabel()) {
          bitField0_ |= 0x00000001;
          extensionFileLabel_ = other.extensionFileLabel_;
          onChanged();
        }
        if (other.hasExportedName()) {
          bitField0_ |= 0x00000002;
          exportedName_ = other.exportedName_;
          onChanged();
        }
        if (attributeBuilder_ == null) {
          if (!other.attribute_.isEmpty()) {
            if (attribute_.isEmpty()) {
              attribute_ = other.attribute_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureAttributeIsMutable();
              attribute_.addAll(other.attribute_);
            }
            onChanged();
          }
        } else {
          if (!other.attribute_.isEmpty()) {
            if (attributeBuilder_.isEmpty()) {
              attributeBuilder_.dispose();
              attributeBuilder_ = null;
              attribute_ = other.attribute_;
              bitField0_ = (bitField0_ & ~0x00000004);
              attributeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttributeFieldBuilder() : null;
            } else {
              attributeBuilder_.addAllMessages(other.attribute_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        if (!hasExtensionFileLabel()) {
          return false;
        }
        if (!hasExportedName()) {
          return false;
        }
        for (int i = 0; i < getAttributeCount(); i++) {
          if (!getAttribute(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object extensionFileLabel_ = "";
      /**
       * <code>required string extension_file_label = 1;</code>
       */
      public boolean hasExtensionFileLabel() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string extension_file_label = 1;</code>
       */
      public java.lang.String getExtensionFileLabel() {
        java.lang.Object ref = extensionFileLabel_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            extensionFileLabel_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string extension_file_label = 1;</code>
       */
      public com.google.protobuf.ByteString
          getExtensionFileLabelBytes() {
        java.lang.Object ref = extensionFileLabel_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          extensionFileLabel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string extension_file_label = 1;</code>
       */
      public Builder setExtensionFileLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        extensionFileLabel_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string extension_file_label = 1;</code>
       */
      public Builder clearExtensionFileLabel() {
        bitField0_ = (bitField0_ & ~0x00000001);
        extensionFileLabel_ = getDefaultInstance().getExtensionFileLabel();
        onChanged();
        return this;
      }
      /**
       * <code>required string extension_file_label = 1;</code>
       */
      public Builder setExtensionFileLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        extensionFileLabel_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object exportedName_ = "";
      /**
       * <code>required string exported_name = 2;</code>
       */
      public boolean hasExportedName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string exported_name = 2;</code>
       */
      public java.lang.String getExportedName() {
        java.lang.Object ref = exportedName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            exportedName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string exported_name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getExportedNameBytes() {
        java.lang.Object ref = exportedName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          exportedName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string exported_name = 2;</code>
       */
      public Builder setExportedName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        exportedName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string exported_name = 2;</code>
       */
      public Builder clearExportedName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        exportedName_ = getDefaultInstance().getExportedName();
        onChanged();
        return this;
      }
      /**
       * <code>required string exported_name = 2;</code>
       */
      public Builder setExportedNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        exportedName_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> attribute_ =
        java.util.Collections.emptyList();
      private void ensureAttributeIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          attribute_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute>(attribute_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> attributeBuilder_;

      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> getAttributeList() {
        if (attributeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(attribute_);
        } else {
          return attributeBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public int getAttributeCount() {
        if (attributeBuilder_ == null) {
          return attribute_.size();
        } else {
          return attributeBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute getAttribute(int index) {
        if (attributeBuilder_ == null) {
          return attribute_.get(index);
        } else {
          return attributeBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder setAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.set(index, value);
          onChanged();
        } else {
          attributeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder setAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.set(index, builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder addAttribute(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.add(value);
          onChanged();
        } else {
          attributeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder addAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.add(index, value);
          onChanged();
        } else {
          attributeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder addAttribute(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.add(builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder addAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.add(index, builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder addAllAttribute(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute> values) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, attribute_);
          onChanged();
        } else {
          attributeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder clearAttribute() {
        if (attributeBuilder_ == null) {
          attribute_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          attributeBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public Builder removeAttribute(int index) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.remove(index);
          onChanged();
        } else {
          attributeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder getAttributeBuilder(
          int index) {
        return getAttributeFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder getAttributeOrBuilder(
          int index) {
        if (attributeBuilder_ == null) {
          return attribute_.get(index);  } else {
          return attributeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> 
           getAttributeOrBuilderList() {
        if (attributeBuilder_ != null) {
          return attributeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(attribute_);
        }
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder addAttributeBuilder() {
        return getAttributeFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.getDefaultInstance());
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder addAttributeBuilder(
          int index) {
        return getAttributeFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.getDefaultInstance());
      }
      /**
       * <code>repeated .blaze_query.Attribute attribute = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder> 
           getAttributeBuilderList() {
        return getAttributeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder> 
          getAttributeFieldBuilder() {
        if (attributeBuilder_ == null) {
          attributeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute, com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeOrBuilder>(
                  attribute_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          attribute_ = null;
        }
        return attributeBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.SkylarkAspect)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.SkylarkAspect)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.SkylarkAspect getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RuleSummaryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.RuleSummary)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .blaze_query.Rule rule = 1;</code>
     */
    boolean hasRule();
    /**
     * <code>required .blaze_query.Rule rule = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getRule();
    /**
     * <code>required .blaze_query.Rule rule = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getRuleOrBuilder();

    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule> 
        getDependencyList();
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getDependency(int index);
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    int getDependencyCount();
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> 
        getDependencyOrBuilderList();
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getDependencyOrBuilder(
        int index);

    /**
     * <code>optional string location = 3;</code>
     */
    boolean hasLocation();
    /**
     * <code>optional string location = 3;</code>
     */
    java.lang.String getLocation();
    /**
     * <code>optional string location = 3;</code>
     */
    com.google.protobuf.ByteString
        getLocationBytes();
  }
  /**
   * <pre>
   * Summary of all transitive dependencies of 'rule,' where each dependent
   * rule is included only once in the 'dependency' field.  Gives complete
   * information to analyze the single build target labeled rule.name,
   * including optional location of target in BUILD file.
   * </pre>
   *
   * Protobuf type {@code blaze_query.RuleSummary}
   */
  public  static final class RuleSummary extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.RuleSummary)
      RuleSummaryOrBuilder {
    // Use RuleSummary.newBuilder() to construct.
    private RuleSummary(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RuleSummary() {
      dependency_ = java.util.Collections.emptyList();
      location_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RuleSummary(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = rule_.toBuilder();
              }
              rule_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rule_);
                rule_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                dependency_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule>();
                mutable_bitField0_ |= 0x00000002;
              }
              dependency_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              location_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          dependency_ = java.util.Collections.unmodifiableList(dependency_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleSummary_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleSummary_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary.Builder.class);
    }

    private int bitField0_;
    public static final int RULE_FIELD_NUMBER = 1;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule rule_;
    /**
     * <code>required .blaze_query.Rule rule = 1;</code>
     */
    public boolean hasRule() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .blaze_query.Rule rule = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getRule() {
      return rule_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance() : rule_;
    }
    /**
     * <code>required .blaze_query.Rule rule = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getRuleOrBuilder() {
      return rule_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance() : rule_;
    }

    public static final int DEPENDENCY_FIELD_NUMBER = 2;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule> dependency_;
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule> getDependencyList() {
      return dependency_;
    }
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> 
        getDependencyOrBuilderList() {
      return dependency_;
    }
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    public int getDependencyCount() {
      return dependency_.size();
    }
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getDependency(int index) {
      return dependency_.get(index);
    }
    /**
     * <code>repeated .blaze_query.Rule dependency = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getDependencyOrBuilder(
        int index) {
      return dependency_.get(index);
    }

    public static final int LOCATION_FIELD_NUMBER = 3;
    private volatile java.lang.Object location_;
    /**
     * <code>optional string location = 3;</code>
     */
    public boolean hasLocation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string location = 3;</code>
     */
    public java.lang.String getLocation() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          location_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string location = 3;</code>
     */
    public com.google.protobuf.ByteString
        getLocationBytes() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        location_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasRule()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getRule().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getDependencyCount(); i++) {
        if (!getDependency(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getRule());
      }
      for (int i = 0; i < dependency_.size(); i++) {
        output.writeMessage(2, dependency_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, location_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRule());
      }
      for (int i = 0; i < dependency_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, dependency_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, location_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary) obj;

      boolean result = true;
      result = result && (hasRule() == other.hasRule());
      if (hasRule()) {
        result = result && getRule()
            .equals(other.getRule());
      }
      result = result && getDependencyList()
          .equals(other.getDependencyList());
      result = result && (hasLocation() == other.hasLocation());
      if (hasLocation()) {
        result = result && getLocation()
            .equals(other.getLocation());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasRule()) {
        hash = (37 * hash) + RULE_FIELD_NUMBER;
        hash = (53 * hash) + getRule().hashCode();
      }
      if (getDependencyCount() > 0) {
        hash = (37 * hash) + DEPENDENCY_FIELD_NUMBER;
        hash = (53 * hash) + getDependencyList().hashCode();
      }
      if (hasLocation()) {
        hash = (37 * hash) + LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getLocation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Summary of all transitive dependencies of 'rule,' where each dependent
     * rule is included only once in the 'dependency' field.  Gives complete
     * information to analyze the single build target labeled rule.name,
     * including optional location of target in BUILD file.
     * </pre>
     *
     * Protobuf type {@code blaze_query.RuleSummary}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.RuleSummary)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummaryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleSummary_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleSummary_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRuleFieldBuilder();
          getDependencyFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (ruleBuilder_ == null) {
          rule_ = null;
        } else {
          ruleBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (dependencyBuilder_ == null) {
          dependency_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          dependencyBuilder_.clear();
        }
        location_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleSummary_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (ruleBuilder_ == null) {
          result.rule_ = rule_;
        } else {
          result.rule_ = ruleBuilder_.build();
        }
        if (dependencyBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            dependency_ = java.util.Collections.unmodifiableList(dependency_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.dependency_ = dependency_;
        } else {
          result.dependency_ = dependencyBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.location_ = location_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary.getDefaultInstance()) return this;
        if (other.hasRule()) {
          mergeRule(other.getRule());
        }
        if (dependencyBuilder_ == null) {
          if (!other.dependency_.isEmpty()) {
            if (dependency_.isEmpty()) {
              dependency_ = other.dependency_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureDependencyIsMutable();
              dependency_.addAll(other.dependency_);
            }
            onChanged();
          }
        } else {
          if (!other.dependency_.isEmpty()) {
            if (dependencyBuilder_.isEmpty()) {
              dependencyBuilder_.dispose();
              dependencyBuilder_ = null;
              dependency_ = other.dependency_;
              bitField0_ = (bitField0_ & ~0x00000002);
              dependencyBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDependencyFieldBuilder() : null;
            } else {
              dependencyBuilder_.addAllMessages(other.dependency_);
            }
          }
        }
        if (other.hasLocation()) {
          bitField0_ |= 0x00000004;
          location_ = other.location_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        if (!hasRule()) {
          return false;
        }
        if (!getRule().isInitialized()) {
          return false;
        }
        for (int i = 0; i < getDependencyCount(); i++) {
          if (!getDependency(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule rule_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> ruleBuilder_;
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      public boolean hasRule() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getRule() {
        if (ruleBuilder_ == null) {
          return rule_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance() : rule_;
        } else {
          return ruleBuilder_.getMessage();
        }
      }
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      public Builder setRule(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule value) {
        if (ruleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rule_ = value;
          onChanged();
        } else {
          ruleBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      public Builder setRule(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder builderForValue) {
        if (ruleBuilder_ == null) {
          rule_ = builderForValue.build();
          onChanged();
        } else {
          ruleBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      public Builder mergeRule(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule value) {
        if (ruleBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              rule_ != null &&
              rule_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance()) {
            rule_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.newBuilder(rule_).mergeFrom(value).buildPartial();
          } else {
            rule_ = value;
          }
          onChanged();
        } else {
          ruleBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      public Builder clearRule() {
        if (ruleBuilder_ == null) {
          rule_ = null;
          onChanged();
        } else {
          ruleBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder getRuleBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRuleFieldBuilder().getBuilder();
      }
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getRuleOrBuilder() {
        if (ruleBuilder_ != null) {
          return ruleBuilder_.getMessageOrBuilder();
        } else {
          return rule_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance() : rule_;
        }
      }
      /**
       * <code>required .blaze_query.Rule rule = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> 
          getRuleFieldBuilder() {
        if (ruleBuilder_ == null) {
          ruleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder>(
                  getRule(),
                  getParentForChildren(),
                  isClean());
          rule_ = null;
        }
        return ruleBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule> dependency_ =
        java.util.Collections.emptyList();
      private void ensureDependencyIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          dependency_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule>(dependency_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> dependencyBuilder_;

      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule> getDependencyList() {
        if (dependencyBuilder_ == null) {
          return java.util.Collections.unmodifiableList(dependency_);
        } else {
          return dependencyBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public int getDependencyCount() {
        if (dependencyBuilder_ == null) {
          return dependency_.size();
        } else {
          return dependencyBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getDependency(int index) {
        if (dependencyBuilder_ == null) {
          return dependency_.get(index);
        } else {
          return dependencyBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder setDependency(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule value) {
        if (dependencyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDependencyIsMutable();
          dependency_.set(index, value);
          onChanged();
        } else {
          dependencyBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder setDependency(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder builderForValue) {
        if (dependencyBuilder_ == null) {
          ensureDependencyIsMutable();
          dependency_.set(index, builderForValue.build());
          onChanged();
        } else {
          dependencyBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder addDependency(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule value) {
        if (dependencyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDependencyIsMutable();
          dependency_.add(value);
          onChanged();
        } else {
          dependencyBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder addDependency(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule value) {
        if (dependencyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDependencyIsMutable();
          dependency_.add(index, value);
          onChanged();
        } else {
          dependencyBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder addDependency(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder builderForValue) {
        if (dependencyBuilder_ == null) {
          ensureDependencyIsMutable();
          dependency_.add(builderForValue.build());
          onChanged();
        } else {
          dependencyBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder addDependency(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder builderForValue) {
        if (dependencyBuilder_ == null) {
          ensureDependencyIsMutable();
          dependency_.add(index, builderForValue.build());
          onChanged();
        } else {
          dependencyBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder addAllDependency(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule> values) {
        if (dependencyBuilder_ == null) {
          ensureDependencyIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, dependency_);
          onChanged();
        } else {
          dependencyBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder clearDependency() {
        if (dependencyBuilder_ == null) {
          dependency_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          dependencyBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public Builder removeDependency(int index) {
        if (dependencyBuilder_ == null) {
          ensureDependencyIsMutable();
          dependency_.remove(index);
          onChanged();
        } else {
          dependencyBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder getDependencyBuilder(
          int index) {
        return getDependencyFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getDependencyOrBuilder(
          int index) {
        if (dependencyBuilder_ == null) {
          return dependency_.get(index);  } else {
          return dependencyBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> 
           getDependencyOrBuilderList() {
        if (dependencyBuilder_ != null) {
          return dependencyBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(dependency_);
        }
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder addDependencyBuilder() {
        return getDependencyFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance());
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder addDependencyBuilder(
          int index) {
        return getDependencyFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance());
      }
      /**
       * <code>repeated .blaze_query.Rule dependency = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder> 
           getDependencyBuilderList() {
        return getDependencyFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> 
          getDependencyFieldBuilder() {
        if (dependencyBuilder_ == null) {
          dependencyBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder>(
                  dependency_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          dependency_ = null;
        }
        return dependencyBuilder_;
      }

      private java.lang.Object location_ = "";
      /**
       * <code>optional string location = 3;</code>
       */
      public boolean hasLocation() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string location = 3;</code>
       */
      public java.lang.String getLocation() {
        java.lang.Object ref = location_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            location_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string location = 3;</code>
       */
      public com.google.protobuf.ByteString
          getLocationBytes() {
        java.lang.Object ref = location_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          location_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string location = 3;</code>
       */
      public Builder setLocation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        location_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string location = 3;</code>
       */
      public Builder clearLocation() {
        bitField0_ = (bitField0_ & ~0x00000004);
        location_ = getDefaultInstance().getLocation();
        onChanged();
        return this;
      }
      /**
       * <code>optional string location = 3;</code>
       */
      public Builder setLocationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        location_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.RuleSummary)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.RuleSummary)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleSummary getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PackageGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.PackageGroup)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of the package group
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * The name of the package group
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of the package group
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The list of packages as specified in the BUILD file. Currently this is
     * only a list of packages, but some time in the future, there might be
     * some type of wildcard mechanism.
     * </pre>
     *
     * <code>repeated string contained_package = 2;</code>
     */
    java.util.List<java.lang.String>
        getContainedPackageList();
    /**
     * <pre>
     * The list of packages as specified in the BUILD file. Currently this is
     * only a list of packages, but some time in the future, there might be
     * some type of wildcard mechanism.
     * </pre>
     *
     * <code>repeated string contained_package = 2;</code>
     */
    int getContainedPackageCount();
    /**
     * <pre>
     * The list of packages as specified in the BUILD file. Currently this is
     * only a list of packages, but some time in the future, there might be
     * some type of wildcard mechanism.
     * </pre>
     *
     * <code>repeated string contained_package = 2;</code>
     */
    java.lang.String getContainedPackage(int index);
    /**
     * <pre>
     * The list of packages as specified in the BUILD file. Currently this is
     * only a list of packages, but some time in the future, there might be
     * some type of wildcard mechanism.
     * </pre>
     *
     * <code>repeated string contained_package = 2;</code>
     */
    com.google.protobuf.ByteString
        getContainedPackageBytes(int index);

    /**
     * <pre>
     * The list of sub package groups included in this one.
     * </pre>
     *
     * <code>repeated string included_package_group = 3;</code>
     */
    java.util.List<java.lang.String>
        getIncludedPackageGroupList();
    /**
     * <pre>
     * The list of sub package groups included in this one.
     * </pre>
     *
     * <code>repeated string included_package_group = 3;</code>
     */
    int getIncludedPackageGroupCount();
    /**
     * <pre>
     * The list of sub package groups included in this one.
     * </pre>
     *
     * <code>repeated string included_package_group = 3;</code>
     */
    java.lang.String getIncludedPackageGroup(int index);
    /**
     * <pre>
     * The list of sub package groups included in this one.
     * </pre>
     *
     * <code>repeated string included_package_group = 3;</code>
     */
    com.google.protobuf.ByteString
        getIncludedPackageGroupBytes(int index);

    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
     */
    boolean hasDEPRECATEDParseableLocation();
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation();
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder();
  }
  /**
   * <pre>
   * A package group. Aside from the name, it contains the list of packages
   * present in the group (as specified in the BUILD file).
   * </pre>
   *
   * Protobuf type {@code blaze_query.PackageGroup}
   */
  public  static final class PackageGroup extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.PackageGroup)
      PackageGroupOrBuilder {
    // Use PackageGroup.newBuilder() to construct.
    private PackageGroup(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PackageGroup() {
      name_ = "";
      containedPackage_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      includedPackageGroup_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PackageGroup(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                containedPackage_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              containedPackage_.add(bs);
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                includedPackageGroup_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              includedPackageGroup_.add(bs);
              break;
            }
            case 34: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = dEPRECATEDParseableLocation_.toBuilder();
              }
              dEPRECATEDParseableLocation_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dEPRECATEDParseableLocation_);
                dEPRECATEDParseableLocation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          containedPackage_ = containedPackage_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          includedPackageGroup_ = includedPackageGroup_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_PackageGroup_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_PackageGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * The name of the package group
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The name of the package group
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the package group
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTAINED_PACKAGE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList containedPackage_;
    /**
     * <pre>
     * The list of packages as specified in the BUILD file. Currently this is
     * only a list of packages, but some time in the future, there might be
     * some type of wildcard mechanism.
     * </pre>
     *
     * <code>repeated string contained_package = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getContainedPackageList() {
      return containedPackage_;
    }
    /**
     * <pre>
     * The list of packages as specified in the BUILD file. Currently this is
     * only a list of packages, but some time in the future, there might be
     * some type of wildcard mechanism.
     * </pre>
     *
     * <code>repeated string contained_package = 2;</code>
     */
    public int getContainedPackageCount() {
      return containedPackage_.size();
    }
    /**
     * <pre>
     * The list of packages as specified in the BUILD file. Currently this is
     * only a list of packages, but some time in the future, there might be
     * some type of wildcard mechanism.
     * </pre>
     *
     * <code>repeated string contained_package = 2;</code>
     */
    public java.lang.String getContainedPackage(int index) {
      return containedPackage_.get(index);
    }
    /**
     * <pre>
     * The list of packages as specified in the BUILD file. Currently this is
     * only a list of packages, but some time in the future, there might be
     * some type of wildcard mechanism.
     * </pre>
     *
     * <code>repeated string contained_package = 2;</code>
     */
    public com.google.protobuf.ByteString
        getContainedPackageBytes(int index) {
      return containedPackage_.getByteString(index);
    }

    public static final int INCLUDED_PACKAGE_GROUP_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList includedPackageGroup_;
    /**
     * <pre>
     * The list of sub package groups included in this one.
     * </pre>
     *
     * <code>repeated string included_package_group = 3;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getIncludedPackageGroupList() {
      return includedPackageGroup_;
    }
    /**
     * <pre>
     * The list of sub package groups included in this one.
     * </pre>
     *
     * <code>repeated string included_package_group = 3;</code>
     */
    public int getIncludedPackageGroupCount() {
      return includedPackageGroup_.size();
    }
    /**
     * <pre>
     * The list of sub package groups included in this one.
     * </pre>
     *
     * <code>repeated string included_package_group = 3;</code>
     */
    public java.lang.String getIncludedPackageGroup(int index) {
      return includedPackageGroup_.get(index);
    }
    /**
     * <pre>
     * The list of sub package groups included in this one.
     * </pre>
     *
     * <code>repeated string included_package_group = 3;</code>
     */
    public com.google.protobuf.ByteString
        getIncludedPackageGroupBytes(int index) {
      return includedPackageGroup_.getByteString(index);
    }

    public static final int DEPRECATED_PARSEABLE_LOCATION_FIELD_NUMBER = 4;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDParseableLocation_;
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
     */
    public boolean hasDEPRECATEDParseableLocation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation() {
      return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
    }
    /**
     * <pre>
     * The location of the target in the BUILD file in a machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder() {
      return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < containedPackage_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, containedPackage_.getRaw(i));
      }
      for (int i = 0; i < includedPackageGroup_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, includedPackageGroup_.getRaw(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(4, getDEPRECATEDParseableLocation());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < containedPackage_.size(); i++) {
          dataSize += computeStringSizeNoTag(containedPackage_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getContainedPackageList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < includedPackageGroup_.size(); i++) {
          dataSize += computeStringSizeNoTag(includedPackageGroup_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getIncludedPackageGroupList().size();
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getDEPRECATEDParseableLocation());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup) obj;

      boolean result = true;
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && getContainedPackageList()
          .equals(other.getContainedPackageList());
      result = result && getIncludedPackageGroupList()
          .equals(other.getIncludedPackageGroupList());
      result = result && (hasDEPRECATEDParseableLocation() == other.hasDEPRECATEDParseableLocation());
      if (hasDEPRECATEDParseableLocation()) {
        result = result && getDEPRECATEDParseableLocation()
            .equals(other.getDEPRECATEDParseableLocation());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (getContainedPackageCount() > 0) {
        hash = (37 * hash) + CONTAINED_PACKAGE_FIELD_NUMBER;
        hash = (53 * hash) + getContainedPackageList().hashCode();
      }
      if (getIncludedPackageGroupCount() > 0) {
        hash = (37 * hash) + INCLUDED_PACKAGE_GROUP_FIELD_NUMBER;
        hash = (53 * hash) + getIncludedPackageGroupList().hashCode();
      }
      if (hasDEPRECATEDParseableLocation()) {
        hash = (37 * hash) + DEPRECATED_PARSEABLE_LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getDEPRECATEDParseableLocation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A package group. Aside from the name, it contains the list of packages
     * present in the group (as specified in the BUILD file).
     * </pre>
     *
     * Protobuf type {@code blaze_query.PackageGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.PackageGroup)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_PackageGroup_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_PackageGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDEPRECATEDParseableLocationFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        containedPackage_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        includedPackageGroup_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = null;
        } else {
          dEPRECATEDParseableLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_PackageGroup_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          containedPackage_ = containedPackage_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.containedPackage_ = containedPackage_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          includedPackageGroup_ = includedPackageGroup_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.includedPackageGroup_ = includedPackageGroup_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000002;
        }
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          result.dEPRECATEDParseableLocation_ = dEPRECATEDParseableLocation_;
        } else {
          result.dEPRECATEDParseableLocation_ = dEPRECATEDParseableLocationBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (!other.containedPackage_.isEmpty()) {
          if (containedPackage_.isEmpty()) {
            containedPackage_ = other.containedPackage_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureContainedPackageIsMutable();
            containedPackage_.addAll(other.containedPackage_);
          }
          onChanged();
        }
        if (!other.includedPackageGroup_.isEmpty()) {
          if (includedPackageGroup_.isEmpty()) {
            includedPackageGroup_ = other.includedPackageGroup_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureIncludedPackageGroupIsMutable();
            includedPackageGroup_.addAll(other.includedPackageGroup_);
          }
          onChanged();
        }
        if (other.hasDEPRECATEDParseableLocation()) {
          mergeDEPRECATEDParseableLocation(other.getDEPRECATEDParseableLocation());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The name of the package group
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The name of the package group
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the package group
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the package group
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the package group
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the package group
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList containedPackage_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureContainedPackageIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          containedPackage_ = new com.google.protobuf.LazyStringArrayList(containedPackage_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getContainedPackageList() {
        return containedPackage_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public int getContainedPackageCount() {
        return containedPackage_.size();
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public java.lang.String getContainedPackage(int index) {
        return containedPackage_.get(index);
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public com.google.protobuf.ByteString
          getContainedPackageBytes(int index) {
        return containedPackage_.getByteString(index);
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public Builder setContainedPackage(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureContainedPackageIsMutable();
        containedPackage_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public Builder addContainedPackage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureContainedPackageIsMutable();
        containedPackage_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public Builder addAllContainedPackage(
          java.lang.Iterable<java.lang.String> values) {
        ensureContainedPackageIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, containedPackage_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public Builder clearContainedPackage() {
        containedPackage_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of packages as specified in the BUILD file. Currently this is
       * only a list of packages, but some time in the future, there might be
       * some type of wildcard mechanism.
       * </pre>
       *
       * <code>repeated string contained_package = 2;</code>
       */
      public Builder addContainedPackageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureContainedPackageIsMutable();
        containedPackage_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList includedPackageGroup_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIncludedPackageGroupIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          includedPackageGroup_ = new com.google.protobuf.LazyStringArrayList(includedPackageGroup_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getIncludedPackageGroupList() {
        return includedPackageGroup_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public int getIncludedPackageGroupCount() {
        return includedPackageGroup_.size();
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public java.lang.String getIncludedPackageGroup(int index) {
        return includedPackageGroup_.get(index);
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public com.google.protobuf.ByteString
          getIncludedPackageGroupBytes(int index) {
        return includedPackageGroup_.getByteString(index);
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public Builder setIncludedPackageGroup(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIncludedPackageGroupIsMutable();
        includedPackageGroup_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public Builder addIncludedPackageGroup(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIncludedPackageGroupIsMutable();
        includedPackageGroup_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public Builder addAllIncludedPackageGroup(
          java.lang.Iterable<java.lang.String> values) {
        ensureIncludedPackageGroupIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, includedPackageGroup_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public Builder clearIncludedPackageGroup() {
        includedPackageGroup_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of sub package groups included in this one.
       * </pre>
       *
       * <code>repeated string included_package_group = 3;</code>
       */
      public Builder addIncludedPackageGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIncludedPackageGroupIsMutable();
        includedPackageGroup_.add(value);
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDParseableLocation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> dEPRECATEDParseableLocationBuilder_;
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      public boolean hasDEPRECATEDParseableLocation() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
        } else {
          return dEPRECATEDParseableLocationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      public Builder setDEPRECATEDParseableLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dEPRECATEDParseableLocation_ = value;
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      public Builder setDEPRECATEDParseableLocation(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder builderForValue) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = builderForValue.build();
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      public Builder mergeDEPRECATEDParseableLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              dEPRECATEDParseableLocation_ != null &&
              dEPRECATEDParseableLocation_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance()) {
            dEPRECATEDParseableLocation_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.newBuilder(dEPRECATEDParseableLocation_).mergeFrom(value).buildPartial();
          } else {
            dEPRECATEDParseableLocation_ = value;
          }
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      public Builder clearDEPRECATEDParseableLocation() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = null;
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder getDEPRECATEDParseableLocationBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getDEPRECATEDParseableLocationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder() {
        if (dEPRECATEDParseableLocationBuilder_ != null) {
          return dEPRECATEDParseableLocationBuilder_.getMessageOrBuilder();
        } else {
          return dEPRECATEDParseableLocation_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
        }
      }
      /**
       * <pre>
       * The location of the target in the BUILD file in a machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> 
          getDEPRECATEDParseableLocationFieldBuilder() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder>(
                  getDEPRECATEDParseableLocation(),
                  getParentForChildren(),
                  isClean());
          dEPRECATEDParseableLocation_ = null;
        }
        return dEPRECATEDParseableLocationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.PackageGroup)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.PackageGroup)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EnvironmentGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.EnvironmentGroup)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of the environment group.
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * The name of the environment group.
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of the environment group.
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The environments that belong to this group (as labels).
     * </pre>
     *
     * <code>repeated string environment = 2;</code>
     */
    java.util.List<java.lang.String>
        getEnvironmentList();
    /**
     * <pre>
     * The environments that belong to this group (as labels).
     * </pre>
     *
     * <code>repeated string environment = 2;</code>
     */
    int getEnvironmentCount();
    /**
     * <pre>
     * The environments that belong to this group (as labels).
     * </pre>
     *
     * <code>repeated string environment = 2;</code>
     */
    java.lang.String getEnvironment(int index);
    /**
     * <pre>
     * The environments that belong to this group (as labels).
     * </pre>
     *
     * <code>repeated string environment = 2;</code>
     */
    com.google.protobuf.ByteString
        getEnvironmentBytes(int index);

    /**
     * <pre>
     * The member environments that rules implicitly support if not otherwise
     * specified.
     * </pre>
     *
     * <code>repeated string default = 3;</code>
     */
    java.util.List<java.lang.String>
        getDefaultList();
    /**
     * <pre>
     * The member environments that rules implicitly support if not otherwise
     * specified.
     * </pre>
     *
     * <code>repeated string default = 3;</code>
     */
    int getDefaultCount();
    /**
     * <pre>
     * The member environments that rules implicitly support if not otherwise
     * specified.
     * </pre>
     *
     * <code>repeated string default = 3;</code>
     */
    java.lang.String getDefault(int index);
    /**
     * <pre>
     * The member environments that rules implicitly support if not otherwise
     * specified.
     * </pre>
     *
     * <code>repeated string default = 3;</code>
     */
    com.google.protobuf.ByteString
        getDefaultBytes(int index);
  }
  /**
   * <pre>
   * An environment group.
   * </pre>
   *
   * Protobuf type {@code blaze_query.EnvironmentGroup}
   */
  public  static final class EnvironmentGroup extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.EnvironmentGroup)
      EnvironmentGroupOrBuilder {
    // Use EnvironmentGroup.newBuilder() to construct.
    private EnvironmentGroup(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EnvironmentGroup() {
      name_ = "";
      environment_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      default_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EnvironmentGroup(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                environment_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              environment_.add(bs);
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                default_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              default_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          environment_ = environment_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          default_ = default_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_EnvironmentGroup_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_EnvironmentGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * The name of the environment group.
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The name of the environment group.
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the environment group.
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENVIRONMENT_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList environment_;
    /**
     * <pre>
     * The environments that belong to this group (as labels).
     * </pre>
     *
     * <code>repeated string environment = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getEnvironmentList() {
      return environment_;
    }
    /**
     * <pre>
     * The environments that belong to this group (as labels).
     * </pre>
     *
     * <code>repeated string environment = 2;</code>
     */
    public int getEnvironmentCount() {
      return environment_.size();
    }
    /**
     * <pre>
     * The environments that belong to this group (as labels).
     * </pre>
     *
     * <code>repeated string environment = 2;</code>
     */
    public java.lang.String getEnvironment(int index) {
      return environment_.get(index);
    }
    /**
     * <pre>
     * The environments that belong to this group (as labels).
     * </pre>
     *
     * <code>repeated string environment = 2;</code>
     */
    public com.google.protobuf.ByteString
        getEnvironmentBytes(int index) {
      return environment_.getByteString(index);
    }

    public static final int DEFAULT_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList default_;
    /**
     * <pre>
     * The member environments that rules implicitly support if not otherwise
     * specified.
     * </pre>
     *
     * <code>repeated string default = 3;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getDefaultList() {
      return default_;
    }
    /**
     * <pre>
     * The member environments that rules implicitly support if not otherwise
     * specified.
     * </pre>
     *
     * <code>repeated string default = 3;</code>
     */
    public int getDefaultCount() {
      return default_.size();
    }
    /**
     * <pre>
     * The member environments that rules implicitly support if not otherwise
     * specified.
     * </pre>
     *
     * <code>repeated string default = 3;</code>
     */
    public java.lang.String getDefault(int index) {
      return default_.get(index);
    }
    /**
     * <pre>
     * The member environments that rules implicitly support if not otherwise
     * specified.
     * </pre>
     *
     * <code>repeated string default = 3;</code>
     */
    public com.google.protobuf.ByteString
        getDefaultBytes(int index) {
      return default_.getByteString(index);
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < environment_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, environment_.getRaw(i));
      }
      for (int i = 0; i < default_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, default_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < environment_.size(); i++) {
          dataSize += computeStringSizeNoTag(environment_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getEnvironmentList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < default_.size(); i++) {
          dataSize += computeStringSizeNoTag(default_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDefaultList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup) obj;

      boolean result = true;
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && getEnvironmentList()
          .equals(other.getEnvironmentList());
      result = result && getDefaultList()
          .equals(other.getDefaultList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (getEnvironmentCount() > 0) {
        hash = (37 * hash) + ENVIRONMENT_FIELD_NUMBER;
        hash = (53 * hash) + getEnvironmentList().hashCode();
      }
      if (getDefaultCount() > 0) {
        hash = (37 * hash) + DEFAULT_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * An environment group.
     * </pre>
     *
     * Protobuf type {@code blaze_query.EnvironmentGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.EnvironmentGroup)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_EnvironmentGroup_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_EnvironmentGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        environment_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        default_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_EnvironmentGroup_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          environment_ = environment_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.environment_ = environment_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          default_ = default_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.default_ = default_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (!other.environment_.isEmpty()) {
          if (environment_.isEmpty()) {
            environment_ = other.environment_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureEnvironmentIsMutable();
            environment_.addAll(other.environment_);
          }
          onChanged();
        }
        if (!other.default_.isEmpty()) {
          if (default_.isEmpty()) {
            default_ = other.default_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureDefaultIsMutable();
            default_.addAll(other.default_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The name of the environment group.
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The name of the environment group.
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the environment group.
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the environment group.
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the environment group.
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the environment group.
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList environment_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureEnvironmentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          environment_ = new com.google.protobuf.LazyStringArrayList(environment_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getEnvironmentList() {
        return environment_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public int getEnvironmentCount() {
        return environment_.size();
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public java.lang.String getEnvironment(int index) {
        return environment_.get(index);
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public com.google.protobuf.ByteString
          getEnvironmentBytes(int index) {
        return environment_.getByteString(index);
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public Builder setEnvironment(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureEnvironmentIsMutable();
        environment_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public Builder addEnvironment(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureEnvironmentIsMutable();
        environment_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public Builder addAllEnvironment(
          java.lang.Iterable<java.lang.String> values) {
        ensureEnvironmentIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, environment_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public Builder clearEnvironment() {
        environment_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The environments that belong to this group (as labels).
       * </pre>
       *
       * <code>repeated string environment = 2;</code>
       */
      public Builder addEnvironmentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureEnvironmentIsMutable();
        environment_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList default_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDefaultIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          default_ = new com.google.protobuf.LazyStringArrayList(default_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getDefaultList() {
        return default_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public int getDefaultCount() {
        return default_.size();
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public java.lang.String getDefault(int index) {
        return default_.get(index);
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public com.google.protobuf.ByteString
          getDefaultBytes(int index) {
        return default_.getByteString(index);
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public Builder setDefault(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDefaultIsMutable();
        default_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public Builder addDefault(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDefaultIsMutable();
        default_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public Builder addAllDefault(
          java.lang.Iterable<java.lang.String> values) {
        ensureDefaultIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, default_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public Builder clearDefault() {
        default_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The member environments that rules implicitly support if not otherwise
       * specified.
       * </pre>
       *
       * <code>repeated string default = 3;</code>
       */
      public Builder addDefaultBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDefaultIsMutable();
        default_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.EnvironmentGroup)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.EnvironmentGroup)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SourceFileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.SourceFile)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of the source file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * The name of the source file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of the source file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The location of the source file.  This is a path with line numbers, not
     * a label in the build system.
     * </pre>
     *
     * <code>optional string location = 2;</code>
     */
    boolean hasLocation();
    /**
     * <pre>
     * The location of the source file.  This is a path with line numbers, not
     * a label in the build system.
     * </pre>
     *
     * <code>optional string location = 2;</code>
     */
    java.lang.String getLocation();
    /**
     * <pre>
     * The location of the source file.  This is a path with line numbers, not
     * a label in the build system.
     * </pre>
     *
     * <code>optional string location = 2;</code>
     */
    com.google.protobuf.ByteString
        getLocationBytes();

    /**
     * <pre>
     * The location of the corresponding label in the BUILD file in a
     * machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
     */
    boolean hasDEPRECATEDParseableLocation();
    /**
     * <pre>
     * The location of the corresponding label in the BUILD file in a
     * machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation();
    /**
     * <pre>
     * The location of the corresponding label in the BUILD file in a
     * machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder();

    /**
     * <pre>
     * Labels of files that are transitively subincluded in this BUILD file. This
     * is present only when the SourceFile represents a BUILD file that
     * subincludes other files. The subincluded file can be either a Python
     * preprocessed build extension or a Skylark file.
     * </pre>
     *
     * <code>repeated string subinclude = 3;</code>
     */
    java.util.List<java.lang.String>
        getSubincludeList();
    /**
     * <pre>
     * Labels of files that are transitively subincluded in this BUILD file. This
     * is present only when the SourceFile represents a BUILD file that
     * subincludes other files. The subincluded file can be either a Python
     * preprocessed build extension or a Skylark file.
     * </pre>
     *
     * <code>repeated string subinclude = 3;</code>
     */
    int getSubincludeCount();
    /**
     * <pre>
     * Labels of files that are transitively subincluded in this BUILD file. This
     * is present only when the SourceFile represents a BUILD file that
     * subincludes other files. The subincluded file can be either a Python
     * preprocessed build extension or a Skylark file.
     * </pre>
     *
     * <code>repeated string subinclude = 3;</code>
     */
    java.lang.String getSubinclude(int index);
    /**
     * <pre>
     * Labels of files that are transitively subincluded in this BUILD file. This
     * is present only when the SourceFile represents a BUILD file that
     * subincludes other files. The subincluded file can be either a Python
     * preprocessed build extension or a Skylark file.
     * </pre>
     *
     * <code>repeated string subinclude = 3;</code>
     */
    com.google.protobuf.ByteString
        getSubincludeBytes(int index);

    /**
     * <pre>
     * Labels of package groups that are mentioned in the visibility declaration
     * for this source file.
     * </pre>
     *
     * <code>repeated string package_group = 4;</code>
     */
    java.util.List<java.lang.String>
        getPackageGroupList();
    /**
     * <pre>
     * Labels of package groups that are mentioned in the visibility declaration
     * for this source file.
     * </pre>
     *
     * <code>repeated string package_group = 4;</code>
     */
    int getPackageGroupCount();
    /**
     * <pre>
     * Labels of package groups that are mentioned in the visibility declaration
     * for this source file.
     * </pre>
     *
     * <code>repeated string package_group = 4;</code>
     */
    java.lang.String getPackageGroup(int index);
    /**
     * <pre>
     * Labels of package groups that are mentioned in the visibility declaration
     * for this source file.
     * </pre>
     *
     * <code>repeated string package_group = 4;</code>
     */
    com.google.protobuf.ByteString
        getPackageGroupBytes(int index);

    /**
     * <pre>
     * Labels mentioned in the visibility declaration (including :__pkg__ and
     * //visibility: ones)
     * </pre>
     *
     * <code>repeated string visibility_label = 5;</code>
     */
    java.util.List<java.lang.String>
        getVisibilityLabelList();
    /**
     * <pre>
     * Labels mentioned in the visibility declaration (including :__pkg__ and
     * //visibility: ones)
     * </pre>
     *
     * <code>repeated string visibility_label = 5;</code>
     */
    int getVisibilityLabelCount();
    /**
     * <pre>
     * Labels mentioned in the visibility declaration (including :__pkg__ and
     * //visibility: ones)
     * </pre>
     *
     * <code>repeated string visibility_label = 5;</code>
     */
    java.lang.String getVisibilityLabel(int index);
    /**
     * <pre>
     * Labels mentioned in the visibility declaration (including :__pkg__ and
     * //visibility: ones)
     * </pre>
     *
     * <code>repeated string visibility_label = 5;</code>
     */
    com.google.protobuf.ByteString
        getVisibilityLabelBytes(int index);

    /**
     * <pre>
     * The package-level features enabled for this package. Only present if the
     * SourceFile represents a BUILD file.
     * </pre>
     *
     * <code>repeated string feature = 6;</code>
     */
    java.util.List<java.lang.String>
        getFeatureList();
    /**
     * <pre>
     * The package-level features enabled for this package. Only present if the
     * SourceFile represents a BUILD file.
     * </pre>
     *
     * <code>repeated string feature = 6;</code>
     */
    int getFeatureCount();
    /**
     * <pre>
     * The package-level features enabled for this package. Only present if the
     * SourceFile represents a BUILD file.
     * </pre>
     *
     * <code>repeated string feature = 6;</code>
     */
    java.lang.String getFeature(int index);
    /**
     * <pre>
     * The package-level features enabled for this package. Only present if the
     * SourceFile represents a BUILD file.
     * </pre>
     *
     * <code>repeated string feature = 6;</code>
     */
    com.google.protobuf.ByteString
        getFeatureBytes(int index);

    /**
     * <pre>
     * License attribute for the file.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 8;</code>
     */
    boolean hasLicense();
    /**
     * <pre>
     * License attribute for the file.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 8;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense();
    /**
     * <pre>
     * License attribute for the file.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 8;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder();

    /**
     * <pre>
     * True if the package contains an error. Only present if the SourceFile
     * represents a BUILD file.
     * </pre>
     *
     * <code>optional bool package_contains_errors = 9;</code>
     */
    boolean hasPackageContainsErrors();
    /**
     * <pre>
     * True if the package contains an error. Only present if the SourceFile
     * represents a BUILD file.
     * </pre>
     *
     * <code>optional bool package_contains_errors = 9;</code>
     */
    boolean getPackageContainsErrors();
  }
  /**
   * <pre>
   * A file that is an input into the build system.
   * Next-Id: 10
   * </pre>
   *
   * Protobuf type {@code blaze_query.SourceFile}
   */
  public  static final class SourceFile extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.SourceFile)
      SourceFileOrBuilder {
    // Use SourceFile.newBuilder() to construct.
    private SourceFile(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SourceFile() {
      name_ = "";
      location_ = "";
      subinclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      packageGroup_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      visibilityLabel_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      feature_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      packageContainsErrors_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SourceFile(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              location_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                subinclude_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              subinclude_.add(bs);
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                packageGroup_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              packageGroup_.add(bs);
              break;
            }
            case 42: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                visibilityLabel_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              visibilityLabel_.add(bs);
              break;
            }
            case 50: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                feature_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000040;
              }
              feature_.add(bs);
              break;
            }
            case 58: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = dEPRECATEDParseableLocation_.toBuilder();
              }
              dEPRECATEDParseableLocation_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dEPRECATEDParseableLocation_);
                dEPRECATEDParseableLocation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 66: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = license_.toBuilder();
              }
              license_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.License.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(license_);
                license_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 72: {
              bitField0_ |= 0x00000010;
              packageContainsErrors_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          subinclude_ = subinclude_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          packageGroup_ = packageGroup_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          visibilityLabel_ = visibilityLabel_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          feature_ = feature_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SourceFile_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SourceFile_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * The name of the source file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The name of the source file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the source file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOCATION_FIELD_NUMBER = 2;
    private volatile java.lang.Object location_;
    /**
     * <pre>
     * The location of the source file.  This is a path with line numbers, not
     * a label in the build system.
     * </pre>
     *
     * <code>optional string location = 2;</code>
     */
    public boolean hasLocation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * The location of the source file.  This is a path with line numbers, not
     * a label in the build system.
     * </pre>
     *
     * <code>optional string location = 2;</code>
     */
    public java.lang.String getLocation() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          location_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The location of the source file.  This is a path with line numbers, not
     * a label in the build system.
     * </pre>
     *
     * <code>optional string location = 2;</code>
     */
    public com.google.protobuf.ByteString
        getLocationBytes() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        location_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEPRECATED_PARSEABLE_LOCATION_FIELD_NUMBER = 7;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDParseableLocation_;
    /**
     * <pre>
     * The location of the corresponding label in the BUILD file in a
     * machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
     */
    public boolean hasDEPRECATEDParseableLocation() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * The location of the corresponding label in the BUILD file in a
     * machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation() {
      return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
    }
    /**
     * <pre>
     * The location of the corresponding label in the BUILD file in a
     * machine-parseable form.
     * </pre>
     *
     * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder() {
      return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
    }

    public static final int SUBINCLUDE_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList subinclude_;
    /**
     * <pre>
     * Labels of files that are transitively subincluded in this BUILD file. This
     * is present only when the SourceFile represents a BUILD file that
     * subincludes other files. The subincluded file can be either a Python
     * preprocessed build extension or a Skylark file.
     * </pre>
     *
     * <code>repeated string subinclude = 3;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getSubincludeList() {
      return subinclude_;
    }
    /**
     * <pre>
     * Labels of files that are transitively subincluded in this BUILD file. This
     * is present only when the SourceFile represents a BUILD file that
     * subincludes other files. The subincluded file can be either a Python
     * preprocessed build extension or a Skylark file.
     * </pre>
     *
     * <code>repeated string subinclude = 3;</code>
     */
    public int getSubincludeCount() {
      return subinclude_.size();
    }
    /**
     * <pre>
     * Labels of files that are transitively subincluded in this BUILD file. This
     * is present only when the SourceFile represents a BUILD file that
     * subincludes other files. The subincluded file can be either a Python
     * preprocessed build extension or a Skylark file.
     * </pre>
     *
     * <code>repeated string subinclude = 3;</code>
     */
    public java.lang.String getSubinclude(int index) {
      return subinclude_.get(index);
    }
    /**
     * <pre>
     * Labels of files that are transitively subincluded in this BUILD file. This
     * is present only when the SourceFile represents a BUILD file that
     * subincludes other files. The subincluded file can be either a Python
     * preprocessed build extension or a Skylark file.
     * </pre>
     *
     * <code>repeated string subinclude = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSubincludeBytes(int index) {
      return subinclude_.getByteString(index);
    }

    public static final int PACKAGE_GROUP_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList packageGroup_;
    /**
     * <pre>
     * Labels of package groups that are mentioned in the visibility declaration
     * for this source file.
     * </pre>
     *
     * <code>repeated string package_group = 4;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getPackageGroupList() {
      return packageGroup_;
    }
    /**
     * <pre>
     * Labels of package groups that are mentioned in the visibility declaration
     * for this source file.
     * </pre>
     *
     * <code>repeated string package_group = 4;</code>
     */
    public int getPackageGroupCount() {
      return packageGroup_.size();
    }
    /**
     * <pre>
     * Labels of package groups that are mentioned in the visibility declaration
     * for this source file.
     * </pre>
     *
     * <code>repeated string package_group = 4;</code>
     */
    public java.lang.String getPackageGroup(int index) {
      return packageGroup_.get(index);
    }
    /**
     * <pre>
     * Labels of package groups that are mentioned in the visibility declaration
     * for this source file.
     * </pre>
     *
     * <code>repeated string package_group = 4;</code>
     */
    public com.google.protobuf.ByteString
        getPackageGroupBytes(int index) {
      return packageGroup_.getByteString(index);
    }

    public static final int VISIBILITY_LABEL_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList visibilityLabel_;
    /**
     * <pre>
     * Labels mentioned in the visibility declaration (including :__pkg__ and
     * //visibility: ones)
     * </pre>
     *
     * <code>repeated string visibility_label = 5;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getVisibilityLabelList() {
      return visibilityLabel_;
    }
    /**
     * <pre>
     * Labels mentioned in the visibility declaration (including :__pkg__ and
     * //visibility: ones)
     * </pre>
     *
     * <code>repeated string visibility_label = 5;</code>
     */
    public int getVisibilityLabelCount() {
      return visibilityLabel_.size();
    }
    /**
     * <pre>
     * Labels mentioned in the visibility declaration (including :__pkg__ and
     * //visibility: ones)
     * </pre>
     *
     * <code>repeated string visibility_label = 5;</code>
     */
    public java.lang.String getVisibilityLabel(int index) {
      return visibilityLabel_.get(index);
    }
    /**
     * <pre>
     * Labels mentioned in the visibility declaration (including :__pkg__ and
     * //visibility: ones)
     * </pre>
     *
     * <code>repeated string visibility_label = 5;</code>
     */
    public com.google.protobuf.ByteString
        getVisibilityLabelBytes(int index) {
      return visibilityLabel_.getByteString(index);
    }

    public static final int FEATURE_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList feature_;
    /**
     * <pre>
     * The package-level features enabled for this package. Only present if the
     * SourceFile represents a BUILD file.
     * </pre>
     *
     * <code>repeated string feature = 6;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getFeatureList() {
      return feature_;
    }
    /**
     * <pre>
     * The package-level features enabled for this package. Only present if the
     * SourceFile represents a BUILD file.
     * </pre>
     *
     * <code>repeated string feature = 6;</code>
     */
    public int getFeatureCount() {
      return feature_.size();
    }
    /**
     * <pre>
     * The package-level features enabled for this package. Only present if the
     * SourceFile represents a BUILD file.
     * </pre>
     *
     * <code>repeated string feature = 6;</code>
     */
    public java.lang.String getFeature(int index) {
      return feature_.get(index);
    }
    /**
     * <pre>
     * The package-level features enabled for this package. Only present if the
     * SourceFile represents a BUILD file.
     * </pre>
     *
     * <code>repeated string feature = 6;</code>
     */
    public com.google.protobuf.ByteString
        getFeatureBytes(int index) {
      return feature_.getByteString(index);
    }

    public static final int LICENSE_FIELD_NUMBER = 8;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.License license_;
    /**
     * <pre>
     * License attribute for the file.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 8;</code>
     */
    public boolean hasLicense() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * License attribute for the file.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 8;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense() {
      return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
    }
    /**
     * <pre>
     * License attribute for the file.
     * </pre>
     *
     * <code>optional .blaze_query.License license = 8;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder() {
      return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
    }

    public static final int PACKAGE_CONTAINS_ERRORS_FIELD_NUMBER = 9;
    private boolean packageContainsErrors_;
    /**
     * <pre>
     * True if the package contains an error. Only present if the SourceFile
     * represents a BUILD file.
     * </pre>
     *
     * <code>optional bool package_contains_errors = 9;</code>
     */
    public boolean hasPackageContainsErrors() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <pre>
     * True if the package contains an error. Only present if the SourceFile
     * represents a BUILD file.
     * </pre>
     *
     * <code>optional bool package_contains_errors = 9;</code>
     */
    public boolean getPackageContainsErrors() {
      return packageContainsErrors_;
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, location_);
      }
      for (int i = 0; i < subinclude_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, subinclude_.getRaw(i));
      }
      for (int i = 0; i < packageGroup_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, packageGroup_.getRaw(i));
      }
      for (int i = 0; i < visibilityLabel_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, visibilityLabel_.getRaw(i));
      }
      for (int i = 0; i < feature_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, feature_.getRaw(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(7, getDEPRECATEDParseableLocation());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(8, getLicense());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(9, packageContainsErrors_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, location_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < subinclude_.size(); i++) {
          dataSize += computeStringSizeNoTag(subinclude_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getSubincludeList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < packageGroup_.size(); i++) {
          dataSize += computeStringSizeNoTag(packageGroup_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPackageGroupList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < visibilityLabel_.size(); i++) {
          dataSize += computeStringSizeNoTag(visibilityLabel_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getVisibilityLabelList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < feature_.size(); i++) {
          dataSize += computeStringSizeNoTag(feature_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getFeatureList().size();
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getDEPRECATEDParseableLocation());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getLicense());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, packageContainsErrors_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile) obj;

      boolean result = true;
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && (hasLocation() == other.hasLocation());
      if (hasLocation()) {
        result = result && getLocation()
            .equals(other.getLocation());
      }
      result = result && (hasDEPRECATEDParseableLocation() == other.hasDEPRECATEDParseableLocation());
      if (hasDEPRECATEDParseableLocation()) {
        result = result && getDEPRECATEDParseableLocation()
            .equals(other.getDEPRECATEDParseableLocation());
      }
      result = result && getSubincludeList()
          .equals(other.getSubincludeList());
      result = result && getPackageGroupList()
          .equals(other.getPackageGroupList());
      result = result && getVisibilityLabelList()
          .equals(other.getVisibilityLabelList());
      result = result && getFeatureList()
          .equals(other.getFeatureList());
      result = result && (hasLicense() == other.hasLicense());
      if (hasLicense()) {
        result = result && getLicense()
            .equals(other.getLicense());
      }
      result = result && (hasPackageContainsErrors() == other.hasPackageContainsErrors());
      if (hasPackageContainsErrors()) {
        result = result && (getPackageContainsErrors()
            == other.getPackageContainsErrors());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasLocation()) {
        hash = (37 * hash) + LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getLocation().hashCode();
      }
      if (hasDEPRECATEDParseableLocation()) {
        hash = (37 * hash) + DEPRECATED_PARSEABLE_LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getDEPRECATEDParseableLocation().hashCode();
      }
      if (getSubincludeCount() > 0) {
        hash = (37 * hash) + SUBINCLUDE_FIELD_NUMBER;
        hash = (53 * hash) + getSubincludeList().hashCode();
      }
      if (getPackageGroupCount() > 0) {
        hash = (37 * hash) + PACKAGE_GROUP_FIELD_NUMBER;
        hash = (53 * hash) + getPackageGroupList().hashCode();
      }
      if (getVisibilityLabelCount() > 0) {
        hash = (37 * hash) + VISIBILITY_LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getVisibilityLabelList().hashCode();
      }
      if (getFeatureCount() > 0) {
        hash = (37 * hash) + FEATURE_FIELD_NUMBER;
        hash = (53 * hash) + getFeatureList().hashCode();
      }
      if (hasLicense()) {
        hash = (37 * hash) + LICENSE_FIELD_NUMBER;
        hash = (53 * hash) + getLicense().hashCode();
      }
      if (hasPackageContainsErrors()) {
        hash = (37 * hash) + PACKAGE_CONTAINS_ERRORS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPackageContainsErrors());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A file that is an input into the build system.
     * Next-Id: 10
     * </pre>
     *
     * Protobuf type {@code blaze_query.SourceFile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.SourceFile)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SourceFile_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SourceFile_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDEPRECATEDParseableLocationFieldBuilder();
          getLicenseFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        location_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = null;
        } else {
          dEPRECATEDParseableLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        subinclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        packageGroup_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        visibilityLabel_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        feature_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        if (licenseBuilder_ == null) {
          license_ = null;
        } else {
          licenseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        packageContainsErrors_ = false;
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_SourceFile_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.location_ = location_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          result.dEPRECATEDParseableLocation_ = dEPRECATEDParseableLocation_;
        } else {
          result.dEPRECATEDParseableLocation_ = dEPRECATEDParseableLocationBuilder_.build();
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          subinclude_ = subinclude_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.subinclude_ = subinclude_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          packageGroup_ = packageGroup_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.packageGroup_ = packageGroup_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          visibilityLabel_ = visibilityLabel_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.visibilityLabel_ = visibilityLabel_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          feature_ = feature_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.feature_ = feature_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000008;
        }
        if (licenseBuilder_ == null) {
          result.license_ = license_;
        } else {
          result.license_ = licenseBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000010;
        }
        result.packageContainsErrors_ = packageContainsErrors_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasLocation()) {
          bitField0_ |= 0x00000002;
          location_ = other.location_;
          onChanged();
        }
        if (other.hasDEPRECATEDParseableLocation()) {
          mergeDEPRECATEDParseableLocation(other.getDEPRECATEDParseableLocation());
        }
        if (!other.subinclude_.isEmpty()) {
          if (subinclude_.isEmpty()) {
            subinclude_ = other.subinclude_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureSubincludeIsMutable();
            subinclude_.addAll(other.subinclude_);
          }
          onChanged();
        }
        if (!other.packageGroup_.isEmpty()) {
          if (packageGroup_.isEmpty()) {
            packageGroup_ = other.packageGroup_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensurePackageGroupIsMutable();
            packageGroup_.addAll(other.packageGroup_);
          }
          onChanged();
        }
        if (!other.visibilityLabel_.isEmpty()) {
          if (visibilityLabel_.isEmpty()) {
            visibilityLabel_ = other.visibilityLabel_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureVisibilityLabelIsMutable();
            visibilityLabel_.addAll(other.visibilityLabel_);
          }
          onChanged();
        }
        if (!other.feature_.isEmpty()) {
          if (feature_.isEmpty()) {
            feature_ = other.feature_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureFeatureIsMutable();
            feature_.addAll(other.feature_);
          }
          onChanged();
        }
        if (other.hasLicense()) {
          mergeLicense(other.getLicense());
        }
        if (other.hasPackageContainsErrors()) {
          setPackageContainsErrors(other.getPackageContainsErrors());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The name of the source file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The name of the source file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the source file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the source file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the source file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the source file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object location_ = "";
      /**
       * <pre>
       * The location of the source file.  This is a path with line numbers, not
       * a label in the build system.
       * </pre>
       *
       * <code>optional string location = 2;</code>
       */
      public boolean hasLocation() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * The location of the source file.  This is a path with line numbers, not
       * a label in the build system.
       * </pre>
       *
       * <code>optional string location = 2;</code>
       */
      public java.lang.String getLocation() {
        java.lang.Object ref = location_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            location_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The location of the source file.  This is a path with line numbers, not
       * a label in the build system.
       * </pre>
       *
       * <code>optional string location = 2;</code>
       */
      public com.google.protobuf.ByteString
          getLocationBytes() {
        java.lang.Object ref = location_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          location_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The location of the source file.  This is a path with line numbers, not
       * a label in the build system.
       * </pre>
       *
       * <code>optional string location = 2;</code>
       */
      public Builder setLocation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        location_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The location of the source file.  This is a path with line numbers, not
       * a label in the build system.
       * </pre>
       *
       * <code>optional string location = 2;</code>
       */
      public Builder clearLocation() {
        bitField0_ = (bitField0_ & ~0x00000002);
        location_ = getDefaultInstance().getLocation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The location of the source file.  This is a path with line numbers, not
       * a label in the build system.
       * </pre>
       *
       * <code>optional string location = 2;</code>
       */
      public Builder setLocationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        location_ = value;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDParseableLocation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> dEPRECATEDParseableLocationBuilder_;
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      public boolean hasDEPRECATEDParseableLocation() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDParseableLocation() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          return dEPRECATEDParseableLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
        } else {
          return dEPRECATEDParseableLocationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      public Builder setDEPRECATEDParseableLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dEPRECATEDParseableLocation_ = value;
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      public Builder setDEPRECATEDParseableLocation(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder builderForValue) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = builderForValue.build();
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      public Builder mergeDEPRECATEDParseableLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              dEPRECATEDParseableLocation_ != null &&
              dEPRECATEDParseableLocation_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance()) {
            dEPRECATEDParseableLocation_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.newBuilder(dEPRECATEDParseableLocation_).mergeFrom(value).buildPartial();
          } else {
            dEPRECATEDParseableLocation_ = value;
          }
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      public Builder clearDEPRECATEDParseableLocation() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocation_ = null;
          onChanged();
        } else {
          dEPRECATEDParseableLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder getDEPRECATEDParseableLocationBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getDEPRECATEDParseableLocationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDParseableLocationOrBuilder() {
        if (dEPRECATEDParseableLocationBuilder_ != null) {
          return dEPRECATEDParseableLocationBuilder_.getMessageOrBuilder();
        } else {
          return dEPRECATEDParseableLocation_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDParseableLocation_;
        }
      }
      /**
       * <pre>
       * The location of the corresponding label in the BUILD file in a
       * machine-parseable form.
       * </pre>
       *
       * <code>optional .blaze_query.Location DEPRECATED_parseable_location = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> 
          getDEPRECATEDParseableLocationFieldBuilder() {
        if (dEPRECATEDParseableLocationBuilder_ == null) {
          dEPRECATEDParseableLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder>(
                  getDEPRECATEDParseableLocation(),
                  getParentForChildren(),
                  isClean());
          dEPRECATEDParseableLocation_ = null;
        }
        return dEPRECATEDParseableLocationBuilder_;
      }

      private com.google.protobuf.LazyStringList subinclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSubincludeIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          subinclude_ = new com.google.protobuf.LazyStringArrayList(subinclude_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getSubincludeList() {
        return subinclude_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public int getSubincludeCount() {
        return subinclude_.size();
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public java.lang.String getSubinclude(int index) {
        return subinclude_.get(index);
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSubincludeBytes(int index) {
        return subinclude_.getByteString(index);
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public Builder setSubinclude(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSubincludeIsMutable();
        subinclude_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public Builder addSubinclude(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSubincludeIsMutable();
        subinclude_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public Builder addAllSubinclude(
          java.lang.Iterable<java.lang.String> values) {
        ensureSubincludeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, subinclude_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public Builder clearSubinclude() {
        subinclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels of files that are transitively subincluded in this BUILD file. This
       * is present only when the SourceFile represents a BUILD file that
       * subincludes other files. The subincluded file can be either a Python
       * preprocessed build extension or a Skylark file.
       * </pre>
       *
       * <code>repeated string subinclude = 3;</code>
       */
      public Builder addSubincludeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSubincludeIsMutable();
        subinclude_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList packageGroup_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensurePackageGroupIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          packageGroup_ = new com.google.protobuf.LazyStringArrayList(packageGroup_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getPackageGroupList() {
        return packageGroup_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public int getPackageGroupCount() {
        return packageGroup_.size();
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public java.lang.String getPackageGroup(int index) {
        return packageGroup_.get(index);
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public com.google.protobuf.ByteString
          getPackageGroupBytes(int index) {
        return packageGroup_.getByteString(index);
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public Builder setPackageGroup(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePackageGroupIsMutable();
        packageGroup_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public Builder addPackageGroup(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePackageGroupIsMutable();
        packageGroup_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public Builder addAllPackageGroup(
          java.lang.Iterable<java.lang.String> values) {
        ensurePackageGroupIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, packageGroup_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public Builder clearPackageGroup() {
        packageGroup_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels of package groups that are mentioned in the visibility declaration
       * for this source file.
       * </pre>
       *
       * <code>repeated string package_group = 4;</code>
       */
      public Builder addPackageGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePackageGroupIsMutable();
        packageGroup_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList visibilityLabel_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureVisibilityLabelIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          visibilityLabel_ = new com.google.protobuf.LazyStringArrayList(visibilityLabel_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getVisibilityLabelList() {
        return visibilityLabel_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public int getVisibilityLabelCount() {
        return visibilityLabel_.size();
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public java.lang.String getVisibilityLabel(int index) {
        return visibilityLabel_.get(index);
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public com.google.protobuf.ByteString
          getVisibilityLabelBytes(int index) {
        return visibilityLabel_.getByteString(index);
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public Builder setVisibilityLabel(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureVisibilityLabelIsMutable();
        visibilityLabel_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public Builder addVisibilityLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureVisibilityLabelIsMutable();
        visibilityLabel_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public Builder addAllVisibilityLabel(
          java.lang.Iterable<java.lang.String> values) {
        ensureVisibilityLabelIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, visibilityLabel_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public Builder clearVisibilityLabel() {
        visibilityLabel_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Labels mentioned in the visibility declaration (including :__pkg__ and
       * //visibility: ones)
       * </pre>
       *
       * <code>repeated string visibility_label = 5;</code>
       */
      public Builder addVisibilityLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureVisibilityLabelIsMutable();
        visibilityLabel_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList feature_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureFeatureIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          feature_ = new com.google.protobuf.LazyStringArrayList(feature_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getFeatureList() {
        return feature_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public int getFeatureCount() {
        return feature_.size();
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public java.lang.String getFeature(int index) {
        return feature_.get(index);
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public com.google.protobuf.ByteString
          getFeatureBytes(int index) {
        return feature_.getByteString(index);
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public Builder setFeature(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFeatureIsMutable();
        feature_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public Builder addFeature(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFeatureIsMutable();
        feature_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public Builder addAllFeature(
          java.lang.Iterable<java.lang.String> values) {
        ensureFeatureIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, feature_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public Builder clearFeature() {
        feature_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The package-level features enabled for this package. Only present if the
       * SourceFile represents a BUILD file.
       * </pre>
       *
       * <code>repeated string feature = 6;</code>
       */
      public Builder addFeatureBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureFeatureIsMutable();
        feature_.add(value);
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.License license_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder> licenseBuilder_;
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      public boolean hasLicense() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.License getLicense() {
        if (licenseBuilder_ == null) {
          return license_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
        } else {
          return licenseBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      public Builder setLicense(com.google.devtools.build.lib.query2.proto.proto2api.Build.License value) {
        if (licenseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          license_ = value;
          onChanged();
        } else {
          licenseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      public Builder setLicense(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder builderForValue) {
        if (licenseBuilder_ == null) {
          license_ = builderForValue.build();
          onChanged();
        } else {
          licenseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      public Builder mergeLicense(com.google.devtools.build.lib.query2.proto.proto2api.Build.License value) {
        if (licenseBuilder_ == null) {
          if (((bitField0_ & 0x00000080) == 0x00000080) &&
              license_ != null &&
              license_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance()) {
            license_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License.newBuilder(license_).mergeFrom(value).buildPartial();
          } else {
            license_ = value;
          }
          onChanged();
        } else {
          licenseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      public Builder clearLicense() {
        if (licenseBuilder_ == null) {
          license_ = null;
          onChanged();
        } else {
          licenseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder getLicenseBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getLicenseFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder getLicenseOrBuilder() {
        if (licenseBuilder_ != null) {
          return licenseBuilder_.getMessageOrBuilder();
        } else {
          return license_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License.getDefaultInstance() : license_;
        }
      }
      /**
       * <pre>
       * License attribute for the file.
       * </pre>
       *
       * <code>optional .blaze_query.License license = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder> 
          getLicenseFieldBuilder() {
        if (licenseBuilder_ == null) {
          licenseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.License, com.google.devtools.build.lib.query2.proto.proto2api.Build.License.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LicenseOrBuilder>(
                  getLicense(),
                  getParentForChildren(),
                  isClean());
          license_ = null;
        }
        return licenseBuilder_;
      }

      private boolean packageContainsErrors_ ;
      /**
       * <pre>
       * True if the package contains an error. Only present if the SourceFile
       * represents a BUILD file.
       * </pre>
       *
       * <code>optional bool package_contains_errors = 9;</code>
       */
      public boolean hasPackageContainsErrors() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <pre>
       * True if the package contains an error. Only present if the SourceFile
       * represents a BUILD file.
       * </pre>
       *
       * <code>optional bool package_contains_errors = 9;</code>
       */
      public boolean getPackageContainsErrors() {
        return packageContainsErrors_;
      }
      /**
       * <pre>
       * True if the package contains an error. Only present if the SourceFile
       * represents a BUILD file.
       * </pre>
       *
       * <code>optional bool package_contains_errors = 9;</code>
       */
      public Builder setPackageContainsErrors(boolean value) {
        bitField0_ |= 0x00000100;
        packageContainsErrors_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * True if the package contains an error. Only present if the SourceFile
       * represents a BUILD file.
       * </pre>
       *
       * <code>optional bool package_contains_errors = 9;</code>
       */
      public Builder clearPackageContainsErrors() {
        bitField0_ = (bitField0_ & ~0x00000100);
        packageContainsErrors_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.SourceFile)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.SourceFile)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GeneratedFileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.GeneratedFile)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The name of the generated file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * The name of the generated file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of the generated file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The label of the target that generates the file.
     * </pre>
     *
     * <code>required string generating_rule = 2;</code>
     */
    boolean hasGeneratingRule();
    /**
     * <pre>
     * The label of the target that generates the file.
     * </pre>
     *
     * <code>required string generating_rule = 2;</code>
     */
    java.lang.String getGeneratingRule();
    /**
     * <pre>
     * The label of the target that generates the file.
     * </pre>
     *
     * <code>required string generating_rule = 2;</code>
     */
    com.google.protobuf.ByteString
        getGeneratingRuleBytes();

    /**
     * <pre>
     * The path of the output file (not a label).
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    boolean hasLocation();
    /**
     * <pre>
     * The path of the output file (not a label).
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    java.lang.String getLocation();
    /**
     * <pre>
     * The path of the output file (not a label).
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    com.google.protobuf.ByteString
        getLocationBytes();
  }
  /**
   * <pre>
   * A file that is the output of a build rule.
   * </pre>
   *
   * Protobuf type {@code blaze_query.GeneratedFile}
   */
  public  static final class GeneratedFile extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.GeneratedFile)
      GeneratedFileOrBuilder {
    // Use GeneratedFile.newBuilder() to construct.
    private GeneratedFile(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GeneratedFile() {
      name_ = "";
      generatingRule_ = "";
      location_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GeneratedFile(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              generatingRule_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              location_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GeneratedFile_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GeneratedFile_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * The name of the generated file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The name of the generated file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the generated file (a label).
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GENERATING_RULE_FIELD_NUMBER = 2;
    private volatile java.lang.Object generatingRule_;
    /**
     * <pre>
     * The label of the target that generates the file.
     * </pre>
     *
     * <code>required string generating_rule = 2;</code>
     */
    public boolean hasGeneratingRule() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * The label of the target that generates the file.
     * </pre>
     *
     * <code>required string generating_rule = 2;</code>
     */
    public java.lang.String getGeneratingRule() {
      java.lang.Object ref = generatingRule_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          generatingRule_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The label of the target that generates the file.
     * </pre>
     *
     * <code>required string generating_rule = 2;</code>
     */
    public com.google.protobuf.ByteString
        getGeneratingRuleBytes() {
      java.lang.Object ref = generatingRule_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        generatingRule_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOCATION_FIELD_NUMBER = 3;
    private volatile java.lang.Object location_;
    /**
     * <pre>
     * The path of the output file (not a label).
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    public boolean hasLocation() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * The path of the output file (not a label).
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    public java.lang.String getLocation() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          location_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The path of the output file (not a label).
     * </pre>
     *
     * <code>optional string location = 3;</code>
     */
    public com.google.protobuf.ByteString
        getLocationBytes() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        location_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, generatingRule_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, location_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, generatingRule_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, location_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile) obj;

      boolean result = true;
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && (hasGeneratingRule() == other.hasGeneratingRule());
      if (hasGeneratingRule()) {
        result = result && getGeneratingRule()
            .equals(other.getGeneratingRule());
      }
      result = result && (hasLocation() == other.hasLocation());
      if (hasLocation()) {
        result = result && getLocation()
            .equals(other.getLocation());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasGeneratingRule()) {
        hash = (37 * hash) + GENERATING_RULE_FIELD_NUMBER;
        hash = (53 * hash) + getGeneratingRule().hashCode();
      }
      if (hasLocation()) {
        hash = (37 * hash) + LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getLocation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A file that is the output of a build rule.
     * </pre>
     *
     * Protobuf type {@code blaze_query.GeneratedFile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.GeneratedFile)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFileOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GeneratedFile_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GeneratedFile_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        generatingRule_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        location_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GeneratedFile_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.generatingRule_ = generatingRule_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.location_ = location_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasGeneratingRule()) {
          bitField0_ |= 0x00000002;
          generatingRule_ = other.generatingRule_;
          onChanged();
        }
        if (other.hasLocation()) {
          bitField0_ |= 0x00000004;
          location_ = other.location_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The name of the generated file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The name of the generated file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the generated file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the generated file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the generated file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the generated file (a label).
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object generatingRule_ = "";
      /**
       * <pre>
       * The label of the target that generates the file.
       * </pre>
       *
       * <code>required string generating_rule = 2;</code>
       */
      public boolean hasGeneratingRule() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * The label of the target that generates the file.
       * </pre>
       *
       * <code>required string generating_rule = 2;</code>
       */
      public java.lang.String getGeneratingRule() {
        java.lang.Object ref = generatingRule_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            generatingRule_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The label of the target that generates the file.
       * </pre>
       *
       * <code>required string generating_rule = 2;</code>
       */
      public com.google.protobuf.ByteString
          getGeneratingRuleBytes() {
        java.lang.Object ref = generatingRule_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          generatingRule_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The label of the target that generates the file.
       * </pre>
       *
       * <code>required string generating_rule = 2;</code>
       */
      public Builder setGeneratingRule(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        generatingRule_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The label of the target that generates the file.
       * </pre>
       *
       * <code>required string generating_rule = 2;</code>
       */
      public Builder clearGeneratingRule() {
        bitField0_ = (bitField0_ & ~0x00000002);
        generatingRule_ = getDefaultInstance().getGeneratingRule();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The label of the target that generates the file.
       * </pre>
       *
       * <code>required string generating_rule = 2;</code>
       */
      public Builder setGeneratingRuleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        generatingRule_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object location_ = "";
      /**
       * <pre>
       * The path of the output file (not a label).
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public boolean hasLocation() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * The path of the output file (not a label).
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public java.lang.String getLocation() {
        java.lang.Object ref = location_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            location_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The path of the output file (not a label).
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public com.google.protobuf.ByteString
          getLocationBytes() {
        java.lang.Object ref = location_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          location_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The path of the output file (not a label).
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public Builder setLocation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        location_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the output file (not a label).
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public Builder clearLocation() {
        bitField0_ = (bitField0_ & ~0x00000004);
        location_ = getDefaultInstance().getLocation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the output file (not a label).
       * </pre>
       *
       * <code>optional string location = 3;</code>
       */
      public Builder setLocationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        location_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.GeneratedFile)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.GeneratedFile)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TargetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.Target)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The type of target contained in the message.
     * </pre>
     *
     * <code>required .blaze_query.Target.Discriminator type = 1;</code>
     */
    boolean hasType();
    /**
     * <pre>
     * The type of target contained in the message.
     * </pre>
     *
     * <code>required .blaze_query.Target.Discriminator type = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator getType();

    /**
     * <pre>
     * If this target represents a rule, the rule is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Rule rule = 2;</code>
     */
    boolean hasRule();
    /**
     * <pre>
     * If this target represents a rule, the rule is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Rule rule = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getRule();
    /**
     * <pre>
     * If this target represents a rule, the rule is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Rule rule = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getRuleOrBuilder();

    /**
     * <pre>
     * A file that is not generated by the build system (version controlled
     * or created by the test harness).
     * </pre>
     *
     * <code>optional .blaze_query.SourceFile source_file = 3;</code>
     */
    boolean hasSourceFile();
    /**
     * <pre>
     * A file that is not generated by the build system (version controlled
     * or created by the test harness).
     * </pre>
     *
     * <code>optional .blaze_query.SourceFile source_file = 3;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile getSourceFile();
    /**
     * <pre>
     * A file that is not generated by the build system (version controlled
     * or created by the test harness).
     * </pre>
     *
     * <code>optional .blaze_query.SourceFile source_file = 3;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFileOrBuilder getSourceFileOrBuilder();

    /**
     * <pre>
     * A generated file that is the output of a rule.
     * </pre>
     *
     * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
     */
    boolean hasGeneratedFile();
    /**
     * <pre>
     * A generated file that is the output of a rule.
     * </pre>
     *
     * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile getGeneratedFile();
    /**
     * <pre>
     * A generated file that is the output of a rule.
     * </pre>
     *
     * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFileOrBuilder getGeneratedFileOrBuilder();

    /**
     * <pre>
     * A package group.
     * </pre>
     *
     * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
     */
    boolean hasPackageGroup();
    /**
     * <pre>
     * A package group.
     * </pre>
     *
     * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup getPackageGroup();
    /**
     * <pre>
     * A package group.
     * </pre>
     *
     * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroupOrBuilder getPackageGroupOrBuilder();

    /**
     * <pre>
     * An environment group.
     * </pre>
     *
     * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
     */
    boolean hasEnvironmentGroup();
    /**
     * <pre>
     * An environment group.
     * </pre>
     *
     * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup getEnvironmentGroup();
    /**
     * <pre>
     * An environment group.
     * </pre>
     *
     * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroupOrBuilder getEnvironmentGroupOrBuilder();
  }
  /**
   * <pre>
   * A target from a blaze query execution.  Similar to the Attribute message,
   * the Discriminator is used to determine which field contains information.
   * For any given type, only one of these can be populated in a single Target.
   * </pre>
   *
   * Protobuf type {@code blaze_query.Target}
   */
  public  static final class Target extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.Target)
      TargetOrBuilder {
    // Use Target.newBuilder() to construct.
    private Target(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Target() {
      type_ = 1;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Target(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator value = com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                type_ = rawValue;
              }
              break;
            }
            case 18: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = rule_.toBuilder();
              }
              rule_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rule_);
                rule_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = sourceFile_.toBuilder();
              }
              sourceFile_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sourceFile_);
                sourceFile_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = generatedFile_.toBuilder();
              }
              generatedFile_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(generatedFile_);
                generatedFile_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) == 0x00000010)) {
                subBuilder = packageGroup_.toBuilder();
              }
              packageGroup_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(packageGroup_);
                packageGroup_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 50: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) == 0x00000020)) {
                subBuilder = environmentGroup_.toBuilder();
              }
              environmentGroup_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(environmentGroup_);
                environmentGroup_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Target_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Target_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder.class);
    }

    /**
     * Protobuf enum {@code blaze_query.Target.Discriminator}
     */
    public enum Discriminator
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>RULE = 1;</code>
       */
      RULE(1),
      /**
       * <code>SOURCE_FILE = 2;</code>
       */
      SOURCE_FILE(2),
      /**
       * <code>GENERATED_FILE = 3;</code>
       */
      GENERATED_FILE(3),
      /**
       * <code>PACKAGE_GROUP = 4;</code>
       */
      PACKAGE_GROUP(4),
      /**
       * <code>ENVIRONMENT_GROUP = 5;</code>
       */
      ENVIRONMENT_GROUP(5),
      ;

      /**
       * <code>RULE = 1;</code>
       */
      public static final int RULE_VALUE = 1;
      /**
       * <code>SOURCE_FILE = 2;</code>
       */
      public static final int SOURCE_FILE_VALUE = 2;
      /**
       * <code>GENERATED_FILE = 3;</code>
       */
      public static final int GENERATED_FILE_VALUE = 3;
      /**
       * <code>PACKAGE_GROUP = 4;</code>
       */
      public static final int PACKAGE_GROUP_VALUE = 4;
      /**
       * <code>ENVIRONMENT_GROUP = 5;</code>
       */
      public static final int ENVIRONMENT_GROUP_VALUE = 5;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Discriminator valueOf(int value) {
        return forNumber(value);
      }

      public static Discriminator forNumber(int value) {
        switch (value) {
          case 1: return RULE;
          case 2: return SOURCE_FILE;
          case 3: return GENERATED_FILE;
          case 4: return PACKAGE_GROUP;
          case 5: return ENVIRONMENT_GROUP;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

      private Discriminator(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:blaze_query.Target.Discriminator)
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_;
    /**
     * <pre>
     * The type of target contained in the message.
     * </pre>
     *
     * <code>required .blaze_query.Target.Discriminator type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * The type of target contained in the message.
     * </pre>
     *
     * <code>required .blaze_query.Target.Discriminator type = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator getType() {
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.valueOf(type_);
      return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.RULE : result;
    }

    public static final int RULE_FIELD_NUMBER = 2;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule rule_;
    /**
     * <pre>
     * If this target represents a rule, the rule is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Rule rule = 2;</code>
     */
    public boolean hasRule() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * If this target represents a rule, the rule is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Rule rule = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getRule() {
      return rule_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance() : rule_;
    }
    /**
     * <pre>
     * If this target represents a rule, the rule is stored here.
     * </pre>
     *
     * <code>optional .blaze_query.Rule rule = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getRuleOrBuilder() {
      return rule_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance() : rule_;
    }

    public static final int SOURCE_FILE_FIELD_NUMBER = 3;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile sourceFile_;
    /**
     * <pre>
     * A file that is not generated by the build system (version controlled
     * or created by the test harness).
     * </pre>
     *
     * <code>optional .blaze_query.SourceFile source_file = 3;</code>
     */
    public boolean hasSourceFile() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * A file that is not generated by the build system (version controlled
     * or created by the test harness).
     * </pre>
     *
     * <code>optional .blaze_query.SourceFile source_file = 3;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile getSourceFile() {
      return sourceFile_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.getDefaultInstance() : sourceFile_;
    }
    /**
     * <pre>
     * A file that is not generated by the build system (version controlled
     * or created by the test harness).
     * </pre>
     *
     * <code>optional .blaze_query.SourceFile source_file = 3;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFileOrBuilder getSourceFileOrBuilder() {
      return sourceFile_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.getDefaultInstance() : sourceFile_;
    }

    public static final int GENERATED_FILE_FIELD_NUMBER = 4;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile generatedFile_;
    /**
     * <pre>
     * A generated file that is the output of a rule.
     * </pre>
     *
     * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
     */
    public boolean hasGeneratedFile() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * A generated file that is the output of a rule.
     * </pre>
     *
     * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile getGeneratedFile() {
      return generatedFile_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.getDefaultInstance() : generatedFile_;
    }
    /**
     * <pre>
     * A generated file that is the output of a rule.
     * </pre>
     *
     * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFileOrBuilder getGeneratedFileOrBuilder() {
      return generatedFile_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.getDefaultInstance() : generatedFile_;
    }

    public static final int PACKAGE_GROUP_FIELD_NUMBER = 5;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup packageGroup_;
    /**
     * <pre>
     * A package group.
     * </pre>
     *
     * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
     */
    public boolean hasPackageGroup() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <pre>
     * A package group.
     * </pre>
     *
     * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup getPackageGroup() {
      return packageGroup_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.getDefaultInstance() : packageGroup_;
    }
    /**
     * <pre>
     * A package group.
     * </pre>
     *
     * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroupOrBuilder getPackageGroupOrBuilder() {
      return packageGroup_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.getDefaultInstance() : packageGroup_;
    }

    public static final int ENVIRONMENT_GROUP_FIELD_NUMBER = 6;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup environmentGroup_;
    /**
     * <pre>
     * An environment group.
     * </pre>
     *
     * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
     */
    public boolean hasEnvironmentGroup() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <pre>
     * An environment group.
     * </pre>
     *
     * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup getEnvironmentGroup() {
      return environmentGroup_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.getDefaultInstance() : environmentGroup_;
    }
    /**
     * <pre>
     * An environment group.
     * </pre>
     *
     * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroupOrBuilder getEnvironmentGroupOrBuilder() {
      return environmentGroup_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.getDefaultInstance() : environmentGroup_;
    }

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

      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasRule()) {
        if (!getRule().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSourceFile()) {
        if (!getSourceFile().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGeneratedFile()) {
        if (!getGeneratedFile().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPackageGroup()) {
        if (!getPackageGroup().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasEnvironmentGroup()) {
        if (!getEnvironmentGroup().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, getRule());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, getSourceFile());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, getGeneratedFile());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeMessage(5, getPackageGroup());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(6, getEnvironmentGroup());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, type_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getRule());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSourceFile());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getGeneratedFile());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getPackageGroup());
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getEnvironmentGroup());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Target)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Target other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Target) obj;

      boolean result = true;
      result = result && (hasType() == other.hasType());
      if (hasType()) {
        result = result && type_ == other.type_;
      }
      result = result && (hasRule() == other.hasRule());
      if (hasRule()) {
        result = result && getRule()
            .equals(other.getRule());
      }
      result = result && (hasSourceFile() == other.hasSourceFile());
      if (hasSourceFile()) {
        result = result && getSourceFile()
            .equals(other.getSourceFile());
      }
      result = result && (hasGeneratedFile() == other.hasGeneratedFile());
      if (hasGeneratedFile()) {
        result = result && getGeneratedFile()
            .equals(other.getGeneratedFile());
      }
      result = result && (hasPackageGroup() == other.hasPackageGroup());
      if (hasPackageGroup()) {
        result = result && getPackageGroup()
            .equals(other.getPackageGroup());
      }
      result = result && (hasEnvironmentGroup() == other.hasEnvironmentGroup());
      if (hasEnvironmentGroup()) {
        result = result && getEnvironmentGroup()
            .equals(other.getEnvironmentGroup());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
      }
      if (hasRule()) {
        hash = (37 * hash) + RULE_FIELD_NUMBER;
        hash = (53 * hash) + getRule().hashCode();
      }
      if (hasSourceFile()) {
        hash = (37 * hash) + SOURCE_FILE_FIELD_NUMBER;
        hash = (53 * hash) + getSourceFile().hashCode();
      }
      if (hasGeneratedFile()) {
        hash = (37 * hash) + GENERATED_FILE_FIELD_NUMBER;
        hash = (53 * hash) + getGeneratedFile().hashCode();
      }
      if (hasPackageGroup()) {
        hash = (37 * hash) + PACKAGE_GROUP_FIELD_NUMBER;
        hash = (53 * hash) + getPackageGroup().hashCode();
      }
      if (hasEnvironmentGroup()) {
        hash = (37 * hash) + ENVIRONMENT_GROUP_FIELD_NUMBER;
        hash = (53 * hash) + getEnvironmentGroup().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.Target prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * A target from a blaze query execution.  Similar to the Attribute message,
     * the Discriminator is used to determine which field contains information.
     * For any given type, only one of these can be populated in a single Target.
     * </pre>
     *
     * Protobuf type {@code blaze_query.Target}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.Target)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Target_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Target_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRuleFieldBuilder();
          getSourceFileFieldBuilder();
          getGeneratedFileFieldBuilder();
          getPackageGroupFieldBuilder();
          getEnvironmentGroupFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        type_ = 1;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (ruleBuilder_ == null) {
          rule_ = null;
        } else {
          ruleBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (sourceFileBuilder_ == null) {
          sourceFile_ = null;
        } else {
          sourceFileBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (generatedFileBuilder_ == null) {
          generatedFile_ = null;
        } else {
          generatedFileBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (packageGroupBuilder_ == null) {
          packageGroup_ = null;
        } else {
          packageGroupBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (environmentGroupBuilder_ == null) {
          environmentGroup_ = null;
        } else {
          environmentGroupBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Target_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Target result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Target result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Target(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (ruleBuilder_ == null) {
          result.rule_ = rule_;
        } else {
          result.rule_ = ruleBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (sourceFileBuilder_ == null) {
          result.sourceFile_ = sourceFile_;
        } else {
          result.sourceFile_ = sourceFileBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (generatedFileBuilder_ == null) {
          result.generatedFile_ = generatedFile_;
        } else {
          result.generatedFile_ = generatedFileBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        if (packageGroupBuilder_ == null) {
          result.packageGroup_ = packageGroup_;
        } else {
          result.packageGroup_ = packageGroupBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        if (environmentGroupBuilder_ == null) {
          result.environmentGroup_ = environmentGroup_;
        } else {
          result.environmentGroup_ = environmentGroupBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Target) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.Target)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.Target other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasRule()) {
          mergeRule(other.getRule());
        }
        if (other.hasSourceFile()) {
          mergeSourceFile(other.getSourceFile());
        }
        if (other.hasGeneratedFile()) {
          mergeGeneratedFile(other.getGeneratedFile());
        }
        if (other.hasPackageGroup()) {
          mergePackageGroup(other.getPackageGroup());
        }
        if (other.hasEnvironmentGroup()) {
          mergeEnvironmentGroup(other.getEnvironmentGroup());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        if (!hasType()) {
          return false;
        }
        if (hasRule()) {
          if (!getRule().isInitialized()) {
            return false;
          }
        }
        if (hasSourceFile()) {
          if (!getSourceFile().isInitialized()) {
            return false;
          }
        }
        if (hasGeneratedFile()) {
          if (!getGeneratedFile().isInitialized()) {
            return false;
          }
        }
        if (hasPackageGroup()) {
          if (!getPackageGroup().isInitialized()) {
            return false;
          }
        }
        if (hasEnvironmentGroup()) {
          if (!getEnvironmentGroup().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Target parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Target) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int type_ = 1;
      /**
       * <pre>
       * The type of target contained in the message.
       * </pre>
       *
       * <code>required .blaze_query.Target.Discriminator type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * The type of target contained in the message.
       * </pre>
       *
       * <code>required .blaze_query.Target.Discriminator type = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator getType() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.valueOf(type_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator.RULE : result;
      }
      /**
       * <pre>
       * The type of target contained in the message.
       * </pre>
       *
       * <code>required .blaze_query.Target.Discriminator type = 1;</code>
       */
      public Builder setType(com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Discriminator value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The type of target contained in the message.
       * </pre>
       *
       * <code>required .blaze_query.Target.Discriminator type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 1;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule rule_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> ruleBuilder_;
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      public boolean hasRule() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule getRule() {
        if (ruleBuilder_ == null) {
          return rule_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance() : rule_;
        } else {
          return ruleBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      public Builder setRule(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule value) {
        if (ruleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rule_ = value;
          onChanged();
        } else {
          ruleBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      public Builder setRule(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder builderForValue) {
        if (ruleBuilder_ == null) {
          rule_ = builderForValue.build();
          onChanged();
        } else {
          ruleBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      public Builder mergeRule(com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule value) {
        if (ruleBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              rule_ != null &&
              rule_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance()) {
            rule_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.newBuilder(rule_).mergeFrom(value).buildPartial();
          } else {
            rule_ = value;
          }
          onChanged();
        } else {
          ruleBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      public Builder clearRule() {
        if (ruleBuilder_ == null) {
          rule_ = null;
          onChanged();
        } else {
          ruleBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder getRuleBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getRuleFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder getRuleOrBuilder() {
        if (ruleBuilder_ != null) {
          return ruleBuilder_.getMessageOrBuilder();
        } else {
          return rule_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.getDefaultInstance() : rule_;
        }
      }
      /**
       * <pre>
       * If this target represents a rule, the rule is stored here.
       * </pre>
       *
       * <code>optional .blaze_query.Rule rule = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder> 
          getRuleFieldBuilder() {
        if (ruleBuilder_ == null) {
          ruleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule, com.google.devtools.build.lib.query2.proto.proto2api.Build.Rule.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleOrBuilder>(
                  getRule(),
                  getParentForChildren(),
                  isClean());
          rule_ = null;
        }
        return ruleBuilder_;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile sourceFile_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile, com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFileOrBuilder> sourceFileBuilder_;
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      public boolean hasSourceFile() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile getSourceFile() {
        if (sourceFileBuilder_ == null) {
          return sourceFile_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.getDefaultInstance() : sourceFile_;
        } else {
          return sourceFileBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      public Builder setSourceFile(com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile value) {
        if (sourceFileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sourceFile_ = value;
          onChanged();
        } else {
          sourceFileBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      public Builder setSourceFile(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.Builder builderForValue) {
        if (sourceFileBuilder_ == null) {
          sourceFile_ = builderForValue.build();
          onChanged();
        } else {
          sourceFileBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      public Builder mergeSourceFile(com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile value) {
        if (sourceFileBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              sourceFile_ != null &&
              sourceFile_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.getDefaultInstance()) {
            sourceFile_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.newBuilder(sourceFile_).mergeFrom(value).buildPartial();
          } else {
            sourceFile_ = value;
          }
          onChanged();
        } else {
          sourceFileBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      public Builder clearSourceFile() {
        if (sourceFileBuilder_ == null) {
          sourceFile_ = null;
          onChanged();
        } else {
          sourceFileBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.Builder getSourceFileBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSourceFileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFileOrBuilder getSourceFileOrBuilder() {
        if (sourceFileBuilder_ != null) {
          return sourceFileBuilder_.getMessageOrBuilder();
        } else {
          return sourceFile_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.getDefaultInstance() : sourceFile_;
        }
      }
      /**
       * <pre>
       * A file that is not generated by the build system (version controlled
       * or created by the test harness).
       * </pre>
       *
       * <code>optional .blaze_query.SourceFile source_file = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile, com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFileOrBuilder> 
          getSourceFileFieldBuilder() {
        if (sourceFileBuilder_ == null) {
          sourceFileBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile, com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFile.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.SourceFileOrBuilder>(
                  getSourceFile(),
                  getParentForChildren(),
                  isClean());
          sourceFile_ = null;
        }
        return sourceFileBuilder_;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile generatedFile_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile, com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFileOrBuilder> generatedFileBuilder_;
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      public boolean hasGeneratedFile() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile getGeneratedFile() {
        if (generatedFileBuilder_ == null) {
          return generatedFile_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.getDefaultInstance() : generatedFile_;
        } else {
          return generatedFileBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      public Builder setGeneratedFile(com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile value) {
        if (generatedFileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          generatedFile_ = value;
          onChanged();
        } else {
          generatedFileBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      public Builder setGeneratedFile(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.Builder builderForValue) {
        if (generatedFileBuilder_ == null) {
          generatedFile_ = builderForValue.build();
          onChanged();
        } else {
          generatedFileBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      public Builder mergeGeneratedFile(com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile value) {
        if (generatedFileBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              generatedFile_ != null &&
              generatedFile_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.getDefaultInstance()) {
            generatedFile_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.newBuilder(generatedFile_).mergeFrom(value).buildPartial();
          } else {
            generatedFile_ = value;
          }
          onChanged();
        } else {
          generatedFileBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      public Builder clearGeneratedFile() {
        if (generatedFileBuilder_ == null) {
          generatedFile_ = null;
          onChanged();
        } else {
          generatedFileBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.Builder getGeneratedFileBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getGeneratedFileFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFileOrBuilder getGeneratedFileOrBuilder() {
        if (generatedFileBuilder_ != null) {
          return generatedFileBuilder_.getMessageOrBuilder();
        } else {
          return generatedFile_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.getDefaultInstance() : generatedFile_;
        }
      }
      /**
       * <pre>
       * A generated file that is the output of a rule.
       * </pre>
       *
       * <code>optional .blaze_query.GeneratedFile generated_file = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile, com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFileOrBuilder> 
          getGeneratedFileFieldBuilder() {
        if (generatedFileBuilder_ == null) {
          generatedFileBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile, com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFile.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.GeneratedFileOrBuilder>(
                  getGeneratedFile(),
                  getParentForChildren(),
                  isClean());
          generatedFile_ = null;
        }
        return generatedFileBuilder_;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup packageGroup_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup, com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroupOrBuilder> packageGroupBuilder_;
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      public boolean hasPackageGroup() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup getPackageGroup() {
        if (packageGroupBuilder_ == null) {
          return packageGroup_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.getDefaultInstance() : packageGroup_;
        } else {
          return packageGroupBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      public Builder setPackageGroup(com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup value) {
        if (packageGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          packageGroup_ = value;
          onChanged();
        } else {
          packageGroupBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      public Builder setPackageGroup(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.Builder builderForValue) {
        if (packageGroupBuilder_ == null) {
          packageGroup_ = builderForValue.build();
          onChanged();
        } else {
          packageGroupBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      public Builder mergePackageGroup(com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup value) {
        if (packageGroupBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              packageGroup_ != null &&
              packageGroup_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.getDefaultInstance()) {
            packageGroup_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.newBuilder(packageGroup_).mergeFrom(value).buildPartial();
          } else {
            packageGroup_ = value;
          }
          onChanged();
        } else {
          packageGroupBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      public Builder clearPackageGroup() {
        if (packageGroupBuilder_ == null) {
          packageGroup_ = null;
          onChanged();
        } else {
          packageGroupBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.Builder getPackageGroupBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getPackageGroupFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroupOrBuilder getPackageGroupOrBuilder() {
        if (packageGroupBuilder_ != null) {
          return packageGroupBuilder_.getMessageOrBuilder();
        } else {
          return packageGroup_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.getDefaultInstance() : packageGroup_;
        }
      }
      /**
       * <pre>
       * A package group.
       * </pre>
       *
       * <code>optional .blaze_query.PackageGroup package_group = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup, com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroupOrBuilder> 
          getPackageGroupFieldBuilder() {
        if (packageGroupBuilder_ == null) {
          packageGroupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup, com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroup.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.PackageGroupOrBuilder>(
                  getPackageGroup(),
                  getParentForChildren(),
                  isClean());
          packageGroup_ = null;
        }
        return packageGroupBuilder_;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup environmentGroup_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup, com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroupOrBuilder> environmentGroupBuilder_;
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      public boolean hasEnvironmentGroup() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup getEnvironmentGroup() {
        if (environmentGroupBuilder_ == null) {
          return environmentGroup_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.getDefaultInstance() : environmentGroup_;
        } else {
          return environmentGroupBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      public Builder setEnvironmentGroup(com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup value) {
        if (environmentGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          environmentGroup_ = value;
          onChanged();
        } else {
          environmentGroupBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      public Builder setEnvironmentGroup(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.Builder builderForValue) {
        if (environmentGroupBuilder_ == null) {
          environmentGroup_ = builderForValue.build();
          onChanged();
        } else {
          environmentGroupBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      public Builder mergeEnvironmentGroup(com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup value) {
        if (environmentGroupBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020) &&
              environmentGroup_ != null &&
              environmentGroup_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.getDefaultInstance()) {
            environmentGroup_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.newBuilder(environmentGroup_).mergeFrom(value).buildPartial();
          } else {
            environmentGroup_ = value;
          }
          onChanged();
        } else {
          environmentGroupBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      public Builder clearEnvironmentGroup() {
        if (environmentGroupBuilder_ == null) {
          environmentGroup_ = null;
          onChanged();
        } else {
          environmentGroupBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.Builder getEnvironmentGroupBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getEnvironmentGroupFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroupOrBuilder getEnvironmentGroupOrBuilder() {
        if (environmentGroupBuilder_ != null) {
          return environmentGroupBuilder_.getMessageOrBuilder();
        } else {
          return environmentGroup_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.getDefaultInstance() : environmentGroup_;
        }
      }
      /**
       * <pre>
       * An environment group.
       * </pre>
       *
       * <code>optional .blaze_query.EnvironmentGroup environment_group = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup, com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroupOrBuilder> 
          getEnvironmentGroupFieldBuilder() {
        if (environmentGroupBuilder_ == null) {
          environmentGroupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup, com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroup.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.EnvironmentGroupOrBuilder>(
                  getEnvironmentGroup(),
                  getParentForChildren(),
                  isClean());
          environmentGroup_ = null;
        }
        return environmentGroupBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.Target)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.Target)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.Target DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Target();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface QueryResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.QueryResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Target> 
        getTargetList();
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getTarget(int index);
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    int getTargetCount();
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder> 
        getTargetOrBuilderList();
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder getTargetOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Container for all of the blaze query results.
   * </pre>
   *
   * Protobuf type {@code blaze_query.QueryResult}
   */
  public  static final class QueryResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.QueryResult)
      QueryResultOrBuilder {
    // Use QueryResult.newBuilder() to construct.
    private QueryResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private QueryResult() {
      target_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private QueryResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                target_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Target>();
                mutable_bitField0_ |= 0x00000001;
              }
              target_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          target_ = java.util.Collections.unmodifiableList(target_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_QueryResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_QueryResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult.Builder.class);
    }

    public static final int TARGET_FIELD_NUMBER = 1;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Target> target_;
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Target> getTargetList() {
      return target_;
    }
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder> 
        getTargetOrBuilderList() {
      return target_;
    }
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    public int getTargetCount() {
      return target_.size();
    }
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getTarget(int index) {
      return target_.get(index);
    }
    /**
     * <pre>
     * All of the targets returned by the blaze query.
     * </pre>
     *
     * <code>repeated .blaze_query.Target target = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder getTargetOrBuilder(
        int index) {
      return target_.get(index);
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < target_.size(); i++) {
        output.writeMessage(1, target_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < target_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, target_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getTargetCount() > 0) {
        hash = (37 * hash) + TARGET_FIELD_NUMBER;
        hash = (53 * hash) + getTargetList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Container for all of the blaze query results.
     * </pre>
     *
     * Protobuf type {@code blaze_query.QueryResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.QueryResult)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_QueryResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_QueryResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTargetFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (targetBuilder_ == null) {
          target_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          targetBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_QueryResult_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult(this);
        int from_bitField0_ = bitField0_;
        if (targetBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            target_ = java.util.Collections.unmodifiableList(target_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.target_ = target_;
        } else {
          result.target_ = targetBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult.getDefaultInstance()) return this;
        if (targetBuilder_ == null) {
          if (!other.target_.isEmpty()) {
            if (target_.isEmpty()) {
              target_ = other.target_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTargetIsMutable();
              target_.addAll(other.target_);
            }
            onChanged();
          }
        } else {
          if (!other.target_.isEmpty()) {
            if (targetBuilder_.isEmpty()) {
              targetBuilder_.dispose();
              targetBuilder_ = null;
              target_ = other.target_;
              bitField0_ = (bitField0_ & ~0x00000001);
              targetBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTargetFieldBuilder() : null;
            } else {
              targetBuilder_.addAllMessages(other.target_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Target> target_ =
        java.util.Collections.emptyList();
      private void ensureTargetIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          target_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.Target>(target_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Target, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder> targetBuilder_;

      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Target> getTargetList() {
        if (targetBuilder_ == null) {
          return java.util.Collections.unmodifiableList(target_);
        } else {
          return targetBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public int getTargetCount() {
        if (targetBuilder_ == null) {
          return target_.size();
        } else {
          return targetBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getTarget(int index) {
        if (targetBuilder_ == null) {
          return target_.get(index);
        } else {
          return targetBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder setTarget(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target value) {
        if (targetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTargetIsMutable();
          target_.set(index, value);
          onChanged();
        } else {
          targetBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder setTarget(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder builderForValue) {
        if (targetBuilder_ == null) {
          ensureTargetIsMutable();
          target_.set(index, builderForValue.build());
          onChanged();
        } else {
          targetBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder addTarget(com.google.devtools.build.lib.query2.proto.proto2api.Build.Target value) {
        if (targetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTargetIsMutable();
          target_.add(value);
          onChanged();
        } else {
          targetBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder addTarget(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target value) {
        if (targetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTargetIsMutable();
          target_.add(index, value);
          onChanged();
        } else {
          targetBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder addTarget(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder builderForValue) {
        if (targetBuilder_ == null) {
          ensureTargetIsMutable();
          target_.add(builderForValue.build());
          onChanged();
        } else {
          targetBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder addTarget(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder builderForValue) {
        if (targetBuilder_ == null) {
          ensureTargetIsMutable();
          target_.add(index, builderForValue.build());
          onChanged();
        } else {
          targetBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder addAllTarget(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.Target> values) {
        if (targetBuilder_ == null) {
          ensureTargetIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, target_);
          onChanged();
        } else {
          targetBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder clearTarget() {
        if (targetBuilder_ == null) {
          target_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          targetBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public Builder removeTarget(int index) {
        if (targetBuilder_ == null) {
          ensureTargetIsMutable();
          target_.remove(index);
          onChanged();
        } else {
          targetBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder getTargetBuilder(
          int index) {
        return getTargetFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder getTargetOrBuilder(
          int index) {
        if (targetBuilder_ == null) {
          return target_.get(index);  } else {
          return targetBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder> 
           getTargetOrBuilderList() {
        if (targetBuilder_ != null) {
          return targetBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(target_);
        }
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder addTargetBuilder() {
        return getTargetFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.getDefaultInstance());
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder addTargetBuilder(
          int index) {
        return getTargetFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.getDefaultInstance());
      }
      /**
       * <pre>
       * All of the targets returned by the blaze query.
       * </pre>
       *
       * <code>repeated .blaze_query.Target target = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder> 
           getTargetBuilderList() {
        return getTargetFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Target, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder> 
          getTargetFieldBuilder() {
        if (targetBuilder_ == null) {
          targetBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Target, com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder>(
                  target_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          target_ = null;
        }
        return targetBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.QueryResult)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.QueryResult)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.QueryResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AllowedRuleClassInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.AllowedRuleClassInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .blaze_query.AllowedRuleClassInfo.AllowedRuleClasses policy = 1;</code>
     */
    boolean hasPolicy();
    /**
     * <code>required .blaze_query.AllowedRuleClassInfo.AllowedRuleClasses policy = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses getPolicy();

    /**
     * <pre>
     * Rule class names of rules allowed in this attribute, e.g "cc_library",
     * "py_binary". Only present if the allowed_rule_classes field is set to
     * SPECIFIED.
     * </pre>
     *
     * <code>repeated string allowed_rule_class = 2;</code>
     */
    java.util.List<java.lang.String>
        getAllowedRuleClassList();
    /**
     * <pre>
     * Rule class names of rules allowed in this attribute, e.g "cc_library",
     * "py_binary". Only present if the allowed_rule_classes field is set to
     * SPECIFIED.
     * </pre>
     *
     * <code>repeated string allowed_rule_class = 2;</code>
     */
    int getAllowedRuleClassCount();
    /**
     * <pre>
     * Rule class names of rules allowed in this attribute, e.g "cc_library",
     * "py_binary". Only present if the allowed_rule_classes field is set to
     * SPECIFIED.
     * </pre>
     *
     * <code>repeated string allowed_rule_class = 2;</code>
     */
    java.lang.String getAllowedRuleClass(int index);
    /**
     * <pre>
     * Rule class names of rules allowed in this attribute, e.g "cc_library",
     * "py_binary". Only present if the allowed_rule_classes field is set to
     * SPECIFIED.
     * </pre>
     *
     * <code>repeated string allowed_rule_class = 2;</code>
     */
    com.google.protobuf.ByteString
        getAllowedRuleClassBytes(int index);
  }
  /**
   * <pre>
   * Information about allowed rule classes for a specific attribute of a rule.
   * </pre>
   *
   * Protobuf type {@code blaze_query.AllowedRuleClassInfo}
   */
  public  static final class AllowedRuleClassInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.AllowedRuleClassInfo)
      AllowedRuleClassInfoOrBuilder {
    // Use AllowedRuleClassInfo.newBuilder() to construct.
    private AllowedRuleClassInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AllowedRuleClassInfo() {
      policy_ = 1;
      allowedRuleClass_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AllowedRuleClassInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses value = com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                policy_ = rawValue;
              }
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                allowedRuleClass_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              allowedRuleClass_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          allowedRuleClass_ = allowedRuleClass_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AllowedRuleClassInfo_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AllowedRuleClassInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.Builder.class);
    }

    /**
     * Protobuf enum {@code blaze_query.AllowedRuleClassInfo.AllowedRuleClasses}
     */
    public enum AllowedRuleClasses
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Any rule is allowed to be in this attribute
       * </pre>
       *
       * <code>ANY = 1;</code>
       */
      ANY(1),
      /**
       * <pre>
       * Only the explicitly listed rules are allowed
       * </pre>
       *
       * <code>SPECIFIED = 2;</code>
       */
      SPECIFIED(2),
      ;

      /**
       * <pre>
       * Any rule is allowed to be in this attribute
       * </pre>
       *
       * <code>ANY = 1;</code>
       */
      public static final int ANY_VALUE = 1;
      /**
       * <pre>
       * Only the explicitly listed rules are allowed
       * </pre>
       *
       * <code>SPECIFIED = 2;</code>
       */
      public static final int SPECIFIED_VALUE = 2;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static AllowedRuleClasses valueOf(int value) {
        return forNumber(value);
      }

      public static AllowedRuleClasses forNumber(int value) {
        switch (value) {
          case 1: return ANY;
          case 2: return SPECIFIED;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

      private AllowedRuleClasses(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:blaze_query.AllowedRuleClassInfo.AllowedRuleClasses)
    }

    private int bitField0_;
    public static final int POLICY_FIELD_NUMBER = 1;
    private int policy_;
    /**
     * <code>required .blaze_query.AllowedRuleClassInfo.AllowedRuleClasses policy = 1;</code>
     */
    public boolean hasPolicy() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .blaze_query.AllowedRuleClassInfo.AllowedRuleClasses policy = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses getPolicy() {
      com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses result = com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses.valueOf(policy_);
      return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses.ANY : result;
    }

    public static final int ALLOWED_RULE_CLASS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList allowedRuleClass_;
    /**
     * <pre>
     * Rule class names of rules allowed in this attribute, e.g "cc_library",
     * "py_binary". Only present if the allowed_rule_classes field is set to
     * SPECIFIED.
     * </pre>
     *
     * <code>repeated string allowed_rule_class = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getAllowedRuleClassList() {
      return allowedRuleClass_;
    }
    /**
     * <pre>
     * Rule class names of rules allowed in this attribute, e.g "cc_library",
     * "py_binary". Only present if the allowed_rule_classes field is set to
     * SPECIFIED.
     * </pre>
     *
     * <code>repeated string allowed_rule_class = 2;</code>
     */
    public int getAllowedRuleClassCount() {
      return allowedRuleClass_.size();
    }
    /**
     * <pre>
     * Rule class names of rules allowed in this attribute, e.g "cc_library",
     * "py_binary". Only present if the allowed_rule_classes field is set to
     * SPECIFIED.
     * </pre>
     *
     * <code>repeated string allowed_rule_class = 2;</code>
     */
    public java.lang.String getAllowedRuleClass(int index) {
      return allowedRuleClass_.get(index);
    }
    /**
     * <pre>
     * Rule class names of rules allowed in this attribute, e.g "cc_library",
     * "py_binary". Only present if the allowed_rule_classes field is set to
     * SPECIFIED.
     * </pre>
     *
     * <code>repeated string allowed_rule_class = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAllowedRuleClassBytes(int index) {
      return allowedRuleClass_.getByteString(index);
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, policy_);
      }
      for (int i = 0; i < allowedRuleClass_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, allowedRuleClass_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, policy_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < allowedRuleClass_.size(); i++) {
          dataSize += computeStringSizeNoTag(allowedRuleClass_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAllowedRuleClassList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo) obj;

      boolean result = true;
      result = result && (hasPolicy() == other.hasPolicy());
      if (hasPolicy()) {
        result = result && policy_ == other.policy_;
      }
      result = result && getAllowedRuleClassList()
          .equals(other.getAllowedRuleClassList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasPolicy()) {
        hash = (37 * hash) + POLICY_FIELD_NUMBER;
        hash = (53 * hash) + policy_;
      }
      if (getAllowedRuleClassCount() > 0) {
        hash = (37 * hash) + ALLOWED_RULE_CLASS_FIELD_NUMBER;
        hash = (53 * hash) + getAllowedRuleClassList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Information about allowed rule classes for a specific attribute of a rule.
     * </pre>
     *
     * Protobuf type {@code blaze_query.AllowedRuleClassInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.AllowedRuleClassInfo)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AllowedRuleClassInfo_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AllowedRuleClassInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        policy_ = 1;
        bitField0_ = (bitField0_ & ~0x00000001);
        allowedRuleClass_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AllowedRuleClassInfo_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.policy_ = policy_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          allowedRuleClass_ = allowedRuleClass_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.allowedRuleClass_ = allowedRuleClass_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.getDefaultInstance()) return this;
        if (other.hasPolicy()) {
          setPolicy(other.getPolicy());
        }
        if (!other.allowedRuleClass_.isEmpty()) {
          if (allowedRuleClass_.isEmpty()) {
            allowedRuleClass_ = other.allowedRuleClass_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureAllowedRuleClassIsMutable();
            allowedRuleClass_.addAll(other.allowedRuleClass_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int policy_ = 1;
      /**
       * <code>required .blaze_query.AllowedRuleClassInfo.AllowedRuleClasses policy = 1;</code>
       */
      public boolean hasPolicy() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .blaze_query.AllowedRuleClassInfo.AllowedRuleClasses policy = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses getPolicy() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses result = com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses.valueOf(policy_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses.ANY : result;
      }
      /**
       * <code>required .blaze_query.AllowedRuleClassInfo.AllowedRuleClasses policy = 1;</code>
       */
      public Builder setPolicy(com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.AllowedRuleClasses value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        policy_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .blaze_query.AllowedRuleClassInfo.AllowedRuleClasses policy = 1;</code>
       */
      public Builder clearPolicy() {
        bitField0_ = (bitField0_ & ~0x00000001);
        policy_ = 1;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList allowedRuleClass_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAllowedRuleClassIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          allowedRuleClass_ = new com.google.protobuf.LazyStringArrayList(allowedRuleClass_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getAllowedRuleClassList() {
        return allowedRuleClass_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public int getAllowedRuleClassCount() {
        return allowedRuleClass_.size();
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public java.lang.String getAllowedRuleClass(int index) {
        return allowedRuleClass_.get(index);
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAllowedRuleClassBytes(int index) {
        return allowedRuleClass_.getByteString(index);
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public Builder setAllowedRuleClass(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllowedRuleClassIsMutable();
        allowedRuleClass_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public Builder addAllowedRuleClass(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllowedRuleClassIsMutable();
        allowedRuleClass_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public Builder addAllAllowedRuleClass(
          java.lang.Iterable<java.lang.String> values) {
        ensureAllowedRuleClassIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, allowedRuleClass_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public Builder clearAllowedRuleClass() {
        allowedRuleClass_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rule class names of rules allowed in this attribute, e.g "cc_library",
       * "py_binary". Only present if the allowed_rule_classes field is set to
       * SPECIFIED.
       * </pre>
       *
       * <code>repeated string allowed_rule_class = 2;</code>
       */
      public Builder addAllowedRuleClassBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAllowedRuleClassIsMutable();
        allowedRuleClass_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.AllowedRuleClassInfo)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.AllowedRuleClassInfo)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AttributeDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.AttributeDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Rule name, e.g. "cc_library"
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * Rule name, e.g. "cc_library"
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * Rule name, e.g. "cc_library"
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
     */
    boolean hasType();
    /**
     * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType();

    /**
     * <code>required bool mandatory = 3;</code>
     */
    boolean hasMandatory();
    /**
     * <code>required bool mandatory = 3;</code>
     */
    boolean getMandatory();

    /**
     * <pre>
     * Only present for attributes of type LABEL and LABEL_LIST.
     * </pre>
     *
     * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
     */
    boolean hasAllowedRuleClasses();
    /**
     * <pre>
     * Only present for attributes of type LABEL and LABEL_LIST.
     * </pre>
     *
     * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo getAllowedRuleClasses();
    /**
     * <pre>
     * Only present for attributes of type LABEL and LABEL_LIST.
     * </pre>
     *
     * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfoOrBuilder getAllowedRuleClassesOrBuilder();

    /**
     * <code>optional string documentation = 5;</code>
     */
    boolean hasDocumentation();
    /**
     * <code>optional string documentation = 5;</code>
     */
    java.lang.String getDocumentation();
    /**
     * <code>optional string documentation = 5;</code>
     */
    com.google.protobuf.ByteString
        getDocumentationBytes();
  }
  /**
   * <pre>
   * This message represents a single attribute of a single rule.
   * </pre>
   *
   * Protobuf type {@code blaze_query.AttributeDefinition}
   */
  public  static final class AttributeDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.AttributeDefinition)
      AttributeDefinitionOrBuilder {
    // Use AttributeDefinition.newBuilder() to construct.
    private AttributeDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AttributeDefinition() {
      name_ = "";
      type_ = 1;
      mandatory_ = false;
      documentation_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AttributeDefinition(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator value = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                type_ = rawValue;
              }
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              mandatory_ = input.readBool();
              break;
            }
            case 34: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = allowedRuleClasses_.toBuilder();
              }
              allowedRuleClasses_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(allowedRuleClasses_);
                allowedRuleClasses_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000010;
              documentation_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeDefinition_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Rule name, e.g. "cc_library"
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Rule name, e.g. "cc_library"
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Rule name, e.g. "cc_library"
     * </pre>
     *
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_;
    /**
     * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType() {
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(type_);
      return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.INTEGER : result;
    }

    public static final int MANDATORY_FIELD_NUMBER = 3;
    private boolean mandatory_;
    /**
     * <code>required bool mandatory = 3;</code>
     */
    public boolean hasMandatory() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required bool mandatory = 3;</code>
     */
    public boolean getMandatory() {
      return mandatory_;
    }

    public static final int ALLOWED_RULE_CLASSES_FIELD_NUMBER = 4;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo allowedRuleClasses_;
    /**
     * <pre>
     * Only present for attributes of type LABEL and LABEL_LIST.
     * </pre>
     *
     * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
     */
    public boolean hasAllowedRuleClasses() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * Only present for attributes of type LABEL and LABEL_LIST.
     * </pre>
     *
     * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo getAllowedRuleClasses() {
      return allowedRuleClasses_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.getDefaultInstance() : allowedRuleClasses_;
    }
    /**
     * <pre>
     * Only present for attributes of type LABEL and LABEL_LIST.
     * </pre>
     *
     * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfoOrBuilder getAllowedRuleClassesOrBuilder() {
      return allowedRuleClasses_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.getDefaultInstance() : allowedRuleClasses_;
    }

    public static final int DOCUMENTATION_FIELD_NUMBER = 5;
    private volatile java.lang.Object documentation_;
    /**
     * <code>optional string documentation = 5;</code>
     */
    public boolean hasDocumentation() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional string documentation = 5;</code>
     */
    public java.lang.String getDocumentation() {
      java.lang.Object ref = documentation_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          documentation_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string documentation = 5;</code>
     */
    public com.google.protobuf.ByteString
        getDocumentationBytes() {
      java.lang.Object ref = documentation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        documentation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMandatory()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasAllowedRuleClasses()) {
        if (!getAllowedRuleClasses().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, mandatory_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(4, getAllowedRuleClasses());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, documentation_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, type_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, mandatory_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getAllowedRuleClasses());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, documentation_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition) obj;

      boolean result = true;
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && (hasType() == other.hasType());
      if (hasType()) {
        result = result && type_ == other.type_;
      }
      result = result && (hasMandatory() == other.hasMandatory());
      if (hasMandatory()) {
        result = result && (getMandatory()
            == other.getMandatory());
      }
      result = result && (hasAllowedRuleClasses() == other.hasAllowedRuleClasses());
      if (hasAllowedRuleClasses()) {
        result = result && getAllowedRuleClasses()
            .equals(other.getAllowedRuleClasses());
      }
      result = result && (hasDocumentation() == other.hasDocumentation());
      if (hasDocumentation()) {
        result = result && getDocumentation()
            .equals(other.getDocumentation());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
      }
      if (hasMandatory()) {
        hash = (37 * hash) + MANDATORY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getMandatory());
      }
      if (hasAllowedRuleClasses()) {
        hash = (37 * hash) + ALLOWED_RULE_CLASSES_FIELD_NUMBER;
        hash = (53 * hash) + getAllowedRuleClasses().hashCode();
      }
      if (hasDocumentation()) {
        hash = (37 * hash) + DOCUMENTATION_FIELD_NUMBER;
        hash = (53 * hash) + getDocumentation().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * This message represents a single attribute of a single rule.
     * </pre>
     *
     * Protobuf type {@code blaze_query.AttributeDefinition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.AttributeDefinition)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeDefinition_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAllowedRuleClassesFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 1;
        bitField0_ = (bitField0_ & ~0x00000002);
        mandatory_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (allowedRuleClassesBuilder_ == null) {
          allowedRuleClasses_ = null;
        } else {
          allowedRuleClassesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        documentation_ = "";
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_AttributeDefinition_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.mandatory_ = mandatory_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        if (allowedRuleClassesBuilder_ == null) {
          result.allowedRuleClasses_ = allowedRuleClasses_;
        } else {
          result.allowedRuleClasses_ = allowedRuleClassesBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.documentation_ = documentation_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasMandatory()) {
          setMandatory(other.getMandatory());
        }
        if (other.hasAllowedRuleClasses()) {
          mergeAllowedRuleClasses(other.getAllowedRuleClasses());
        }
        if (other.hasDocumentation()) {
          bitField0_ |= 0x00000010;
          documentation_ = other.documentation_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          return false;
        }
        if (!hasType()) {
          return false;
        }
        if (!hasMandatory()) {
          return false;
        }
        if (hasAllowedRuleClasses()) {
          if (!getAllowedRuleClasses().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Rule name, e.g. "cc_library"
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Rule name, e.g. "cc_library"
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Rule name, e.g. "cc_library"
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Rule name, e.g. "cc_library"
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rule name, e.g. "cc_library"
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rule name, e.g. "cc_library"
       * </pre>
       *
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private int type_ = 1;
      /**
       * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator getType() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.valueOf(type_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator.INTEGER : result;
      }
      /**
       * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
       */
      public Builder setType(com.google.devtools.build.lib.query2.proto.proto2api.Build.Attribute.Discriminator value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .blaze_query.Attribute.Discriminator type = 2;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = 1;
        onChanged();
        return this;
      }

      private boolean mandatory_ ;
      /**
       * <code>required bool mandatory = 3;</code>
       */
      public boolean hasMandatory() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required bool mandatory = 3;</code>
       */
      public boolean getMandatory() {
        return mandatory_;
      }
      /**
       * <code>required bool mandatory = 3;</code>
       */
      public Builder setMandatory(boolean value) {
        bitField0_ |= 0x00000004;
        mandatory_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bool mandatory = 3;</code>
       */
      public Builder clearMandatory() {
        bitField0_ = (bitField0_ & ~0x00000004);
        mandatory_ = false;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo allowedRuleClasses_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo, com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfoOrBuilder> allowedRuleClassesBuilder_;
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      public boolean hasAllowedRuleClasses() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo getAllowedRuleClasses() {
        if (allowedRuleClassesBuilder_ == null) {
          return allowedRuleClasses_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.getDefaultInstance() : allowedRuleClasses_;
        } else {
          return allowedRuleClassesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      public Builder setAllowedRuleClasses(com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo value) {
        if (allowedRuleClassesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          allowedRuleClasses_ = value;
          onChanged();
        } else {
          allowedRuleClassesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      public Builder setAllowedRuleClasses(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.Builder builderForValue) {
        if (allowedRuleClassesBuilder_ == null) {
          allowedRuleClasses_ = builderForValue.build();
          onChanged();
        } else {
          allowedRuleClassesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      public Builder mergeAllowedRuleClasses(com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo value) {
        if (allowedRuleClassesBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008) &&
              allowedRuleClasses_ != null &&
              allowedRuleClasses_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.getDefaultInstance()) {
            allowedRuleClasses_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.newBuilder(allowedRuleClasses_).mergeFrom(value).buildPartial();
          } else {
            allowedRuleClasses_ = value;
          }
          onChanged();
        } else {
          allowedRuleClassesBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      public Builder clearAllowedRuleClasses() {
        if (allowedRuleClassesBuilder_ == null) {
          allowedRuleClasses_ = null;
          onChanged();
        } else {
          allowedRuleClassesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.Builder getAllowedRuleClassesBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getAllowedRuleClassesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfoOrBuilder getAllowedRuleClassesOrBuilder() {
        if (allowedRuleClassesBuilder_ != null) {
          return allowedRuleClassesBuilder_.getMessageOrBuilder();
        } else {
          return allowedRuleClasses_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.getDefaultInstance() : allowedRuleClasses_;
        }
      }
      /**
       * <pre>
       * Only present for attributes of type LABEL and LABEL_LIST.
       * </pre>
       *
       * <code>optional .blaze_query.AllowedRuleClassInfo allowed_rule_classes = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo, com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfoOrBuilder> 
          getAllowedRuleClassesFieldBuilder() {
        if (allowedRuleClassesBuilder_ == null) {
          allowedRuleClassesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo, com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfo.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AllowedRuleClassInfoOrBuilder>(
                  getAllowedRuleClasses(),
                  getParentForChildren(),
                  isClean());
          allowedRuleClasses_ = null;
        }
        return allowedRuleClassesBuilder_;
      }

      private java.lang.Object documentation_ = "";
      /**
       * <code>optional string documentation = 5;</code>
       */
      public boolean hasDocumentation() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional string documentation = 5;</code>
       */
      public java.lang.String getDocumentation() {
        java.lang.Object ref = documentation_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            documentation_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string documentation = 5;</code>
       */
      public com.google.protobuf.ByteString
          getDocumentationBytes() {
        java.lang.Object ref = documentation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          documentation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string documentation = 5;</code>
       */
      public Builder setDocumentation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        documentation_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string documentation = 5;</code>
       */
      public Builder clearDocumentation() {
        bitField0_ = (bitField0_ & ~0x00000010);
        documentation_ = getDefaultInstance().getDocumentation();
        onChanged();
        return this;
      }
      /**
       * <code>optional string documentation = 5;</code>
       */
      public Builder setDocumentationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
        documentation_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.AttributeDefinition)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.AttributeDefinition)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RuleDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.RuleDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition> 
        getAttributeList();
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition getAttribute(int index);
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    int getAttributeCount();
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder> 
        getAttributeOrBuilderList();
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder getAttributeOrBuilder(
        int index);

    /**
     * <code>optional string documentation = 3;</code>
     */
    boolean hasDocumentation();
    /**
     * <code>optional string documentation = 3;</code>
     */
    java.lang.String getDocumentation();
    /**
     * <code>optional string documentation = 3;</code>
     */
    com.google.protobuf.ByteString
        getDocumentationBytes();

    /**
     * <pre>
     * Only for build extensions: label to file that defines the extension
     * </pre>
     *
     * <code>optional string label = 4;</code>
     */
    boolean hasLabel();
    /**
     * <pre>
     * Only for build extensions: label to file that defines the extension
     * </pre>
     *
     * <code>optional string label = 4;</code>
     */
    java.lang.String getLabel();
    /**
     * <pre>
     * Only for build extensions: label to file that defines the extension
     * </pre>
     *
     * <code>optional string label = 4;</code>
     */
    com.google.protobuf.ByteString
        getLabelBytes();
  }
  /**
   * Protobuf type {@code blaze_query.RuleDefinition}
   */
  public  static final class RuleDefinition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.RuleDefinition)
      RuleDefinitionOrBuilder {
    // Use RuleDefinition.newBuilder() to construct.
    private RuleDefinition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RuleDefinition() {
      name_ = "";
      attribute_ = java.util.Collections.emptyList();
      documentation_ = "";
      label_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RuleDefinition(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                attribute_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition>();
                mutable_bitField0_ |= 0x00000002;
              }
              attribute_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              documentation_ = bs;
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              label_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          attribute_ = java.util.Collections.unmodifiableList(attribute_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleDefinition_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ATTRIBUTE_FIELD_NUMBER = 2;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition> attribute_;
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition> getAttributeList() {
      return attribute_;
    }
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder> 
        getAttributeOrBuilderList() {
      return attribute_;
    }
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    public int getAttributeCount() {
      return attribute_.size();
    }
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition getAttribute(int index) {
      return attribute_.get(index);
    }
    /**
     * <pre>
     * Only contains documented attributes
     * </pre>
     *
     * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder getAttributeOrBuilder(
        int index) {
      return attribute_.get(index);
    }

    public static final int DOCUMENTATION_FIELD_NUMBER = 3;
    private volatile java.lang.Object documentation_;
    /**
     * <code>optional string documentation = 3;</code>
     */
    public boolean hasDocumentation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string documentation = 3;</code>
     */
    public java.lang.String getDocumentation() {
      java.lang.Object ref = documentation_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          documentation_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string documentation = 3;</code>
     */
    public com.google.protobuf.ByteString
        getDocumentationBytes() {
      java.lang.Object ref = documentation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        documentation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LABEL_FIELD_NUMBER = 4;
    private volatile java.lang.Object label_;
    /**
     * <pre>
     * Only for build extensions: label to file that defines the extension
     * </pre>
     *
     * <code>optional string label = 4;</code>
     */
    public boolean hasLabel() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * Only for build extensions: label to file that defines the extension
     * </pre>
     *
     * <code>optional string label = 4;</code>
     */
    public java.lang.String getLabel() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          label_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Only for build extensions: label to file that defines the extension
     * </pre>
     *
     * <code>optional string label = 4;</code>
     */
    public com.google.protobuf.ByteString
        getLabelBytes() {
      java.lang.Object ref = label_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        label_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < attribute_.size(); i++) {
        output.writeMessage(2, attribute_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, documentation_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, label_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      for (int i = 0; i < attribute_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, attribute_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, documentation_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, label_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition) obj;

      boolean result = true;
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && getAttributeList()
          .equals(other.getAttributeList());
      result = result && (hasDocumentation() == other.hasDocumentation());
      if (hasDocumentation()) {
        result = result && getDocumentation()
            .equals(other.getDocumentation());
      }
      result = result && (hasLabel() == other.hasLabel());
      if (hasLabel()) {
        result = result && getLabel()
            .equals(other.getLabel());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (getAttributeCount() > 0) {
        hash = (37 * hash) + ATTRIBUTE_FIELD_NUMBER;
        hash = (53 * hash) + getAttributeList().hashCode();
      }
      if (hasDocumentation()) {
        hash = (37 * hash) + DOCUMENTATION_FIELD_NUMBER;
        hash = (53 * hash) + getDocumentation().hashCode();
      }
      if (hasLabel()) {
        hash = (37 * hash) + LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getLabel().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.RuleDefinition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.RuleDefinition)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleDefinition_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAttributeFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (attributeBuilder_ == null) {
          attribute_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          attributeBuilder_.clear();
        }
        documentation_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        label_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_RuleDefinition_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (attributeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            attribute_ = java.util.Collections.unmodifiableList(attribute_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.attribute_ = attribute_;
        } else {
          result.attribute_ = attributeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.documentation_ = documentation_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.label_ = label_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (attributeBuilder_ == null) {
          if (!other.attribute_.isEmpty()) {
            if (attribute_.isEmpty()) {
              attribute_ = other.attribute_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureAttributeIsMutable();
              attribute_.addAll(other.attribute_);
            }
            onChanged();
          }
        } else {
          if (!other.attribute_.isEmpty()) {
            if (attributeBuilder_.isEmpty()) {
              attributeBuilder_.dispose();
              attributeBuilder_ = null;
              attribute_ = other.attribute_;
              bitField0_ = (bitField0_ & ~0x00000002);
              attributeBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttributeFieldBuilder() : null;
            } else {
              attributeBuilder_.addAllMessages(other.attribute_);
            }
          }
        }
        if (other.hasDocumentation()) {
          bitField0_ |= 0x00000004;
          documentation_ = other.documentation_;
          onChanged();
        }
        if (other.hasLabel()) {
          bitField0_ |= 0x00000008;
          label_ = other.label_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition> attribute_ =
        java.util.Collections.emptyList();
      private void ensureAttributeIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          attribute_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition>(attribute_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder> attributeBuilder_;

      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition> getAttributeList() {
        if (attributeBuilder_ == null) {
          return java.util.Collections.unmodifiableList(attribute_);
        } else {
          return attributeBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public int getAttributeCount() {
        if (attributeBuilder_ == null) {
          return attribute_.size();
        } else {
          return attributeBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition getAttribute(int index) {
        if (attributeBuilder_ == null) {
          return attribute_.get(index);
        } else {
          return attributeBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder setAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.set(index, value);
          onChanged();
        } else {
          attributeBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder setAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.set(index, builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder addAttribute(com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.add(value);
          onChanged();
        } else {
          attributeBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder addAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition value) {
        if (attributeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttributeIsMutable();
          attribute_.add(index, value);
          onChanged();
        } else {
          attributeBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder addAttribute(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.add(builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder addAttribute(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder builderForValue) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.add(index, builderForValue.build());
          onChanged();
        } else {
          attributeBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder addAllAttribute(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition> values) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, attribute_);
          onChanged();
        } else {
          attributeBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder clearAttribute() {
        if (attributeBuilder_ == null) {
          attribute_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          attributeBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public Builder removeAttribute(int index) {
        if (attributeBuilder_ == null) {
          ensureAttributeIsMutable();
          attribute_.remove(index);
          onChanged();
        } else {
          attributeBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder getAttributeBuilder(
          int index) {
        return getAttributeFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder getAttributeOrBuilder(
          int index) {
        if (attributeBuilder_ == null) {
          return attribute_.get(index);  } else {
          return attributeBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder> 
           getAttributeOrBuilderList() {
        if (attributeBuilder_ != null) {
          return attributeBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(attribute_);
        }
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder addAttributeBuilder() {
        return getAttributeFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder addAttributeBuilder(
          int index) {
        return getAttributeFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * Only contains documented attributes
       * </pre>
       *
       * <code>repeated .blaze_query.AttributeDefinition attribute = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder> 
           getAttributeBuilderList() {
        return getAttributeFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder> 
          getAttributeFieldBuilder() {
        if (attributeBuilder_ == null) {
          attributeBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinition.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.AttributeDefinitionOrBuilder>(
                  attribute_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          attribute_ = null;
        }
        return attributeBuilder_;
      }

      private java.lang.Object documentation_ = "";
      /**
       * <code>optional string documentation = 3;</code>
       */
      public boolean hasDocumentation() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string documentation = 3;</code>
       */
      public java.lang.String getDocumentation() {
        java.lang.Object ref = documentation_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            documentation_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string documentation = 3;</code>
       */
      public com.google.protobuf.ByteString
          getDocumentationBytes() {
        java.lang.Object ref = documentation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          documentation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string documentation = 3;</code>
       */
      public Builder setDocumentation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        documentation_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string documentation = 3;</code>
       */
      public Builder clearDocumentation() {
        bitField0_ = (bitField0_ & ~0x00000004);
        documentation_ = getDefaultInstance().getDocumentation();
        onChanged();
        return this;
      }
      /**
       * <code>optional string documentation = 3;</code>
       */
      public Builder setDocumentationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        documentation_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object label_ = "";
      /**
       * <pre>
       * Only for build extensions: label to file that defines the extension
       * </pre>
       *
       * <code>optional string label = 4;</code>
       */
      public boolean hasLabel() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       * Only for build extensions: label to file that defines the extension
       * </pre>
       *
       * <code>optional string label = 4;</code>
       */
      public java.lang.String getLabel() {
        java.lang.Object ref = label_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            label_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Only for build extensions: label to file that defines the extension
       * </pre>
       *
       * <code>optional string label = 4;</code>
       */
      public com.google.protobuf.ByteString
          getLabelBytes() {
        java.lang.Object ref = label_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          label_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Only for build extensions: label to file that defines the extension
       * </pre>
       *
       * <code>optional string label = 4;</code>
       */
      public Builder setLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        label_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only for build extensions: label to file that defines the extension
       * </pre>
       *
       * <code>optional string label = 4;</code>
       */
      public Builder clearLabel() {
        bitField0_ = (bitField0_ & ~0x00000008);
        label_ = getDefaultInstance().getLabel();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only for build extensions: label to file that defines the extension
       * </pre>
       *
       * <code>optional string label = 4;</code>
       */
      public Builder setLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        label_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.RuleDefinition)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.RuleDefinition)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BuildLanguageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.BuildLanguage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition> 
        getRuleList();
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition getRule(int index);
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    int getRuleCount();
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder> 
        getRuleOrBuilderList();
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder getRuleOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code blaze_query.BuildLanguage}
   */
  public  static final class BuildLanguage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.BuildLanguage)
      BuildLanguageOrBuilder {
    // Use BuildLanguage.newBuilder() to construct.
    private BuildLanguage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BuildLanguage() {
      rule_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BuildLanguage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                rule_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition>();
                mutable_bitField0_ |= 0x00000001;
              }
              rule_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          rule_ = java.util.Collections.unmodifiableList(rule_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_BuildLanguage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_BuildLanguage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage.Builder.class);
    }

    public static final int RULE_FIELD_NUMBER = 1;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition> rule_;
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition> getRuleList() {
      return rule_;
    }
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder> 
        getRuleOrBuilderList() {
      return rule_;
    }
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    public int getRuleCount() {
      return rule_.size();
    }
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition getRule(int index) {
      return rule_.get(index);
    }
    /**
     * <pre>
     * Only contains documented rule definitions
     * </pre>
     *
     * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder getRuleOrBuilder(
        int index) {
      return rule_.get(index);
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < rule_.size(); i++) {
        output.writeMessage(1, rule_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < rule_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, rule_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getRuleCount() > 0) {
        hash = (37 * hash) + RULE_FIELD_NUMBER;
        hash = (53 * hash) + getRuleList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.BuildLanguage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.BuildLanguage)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_BuildLanguage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_BuildLanguage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRuleFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (ruleBuilder_ == null) {
          rule_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          ruleBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_BuildLanguage_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage(this);
        int from_bitField0_ = bitField0_;
        if (ruleBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            rule_ = java.util.Collections.unmodifiableList(rule_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.rule_ = rule_;
        } else {
          result.rule_ = ruleBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage.getDefaultInstance()) return this;
        if (ruleBuilder_ == null) {
          if (!other.rule_.isEmpty()) {
            if (rule_.isEmpty()) {
              rule_ = other.rule_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRuleIsMutable();
              rule_.addAll(other.rule_);
            }
            onChanged();
          }
        } else {
          if (!other.rule_.isEmpty()) {
            if (ruleBuilder_.isEmpty()) {
              ruleBuilder_.dispose();
              ruleBuilder_ = null;
              rule_ = other.rule_;
              bitField0_ = (bitField0_ & ~0x00000001);
              ruleBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRuleFieldBuilder() : null;
            } else {
              ruleBuilder_.addAllMessages(other.rule_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition> rule_ =
        java.util.Collections.emptyList();
      private void ensureRuleIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          rule_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition>(rule_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder> ruleBuilder_;

      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition> getRuleList() {
        if (ruleBuilder_ == null) {
          return java.util.Collections.unmodifiableList(rule_);
        } else {
          return ruleBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public int getRuleCount() {
        if (ruleBuilder_ == null) {
          return rule_.size();
        } else {
          return ruleBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition getRule(int index) {
        if (ruleBuilder_ == null) {
          return rule_.get(index);
        } else {
          return ruleBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder setRule(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition value) {
        if (ruleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuleIsMutable();
          rule_.set(index, value);
          onChanged();
        } else {
          ruleBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder setRule(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder builderForValue) {
        if (ruleBuilder_ == null) {
          ensureRuleIsMutable();
          rule_.set(index, builderForValue.build());
          onChanged();
        } else {
          ruleBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder addRule(com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition value) {
        if (ruleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuleIsMutable();
          rule_.add(value);
          onChanged();
        } else {
          ruleBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder addRule(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition value) {
        if (ruleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuleIsMutable();
          rule_.add(index, value);
          onChanged();
        } else {
          ruleBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder addRule(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder builderForValue) {
        if (ruleBuilder_ == null) {
          ensureRuleIsMutable();
          rule_.add(builderForValue.build());
          onChanged();
        } else {
          ruleBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder addRule(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder builderForValue) {
        if (ruleBuilder_ == null) {
          ensureRuleIsMutable();
          rule_.add(index, builderForValue.build());
          onChanged();
        } else {
          ruleBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder addAllRule(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition> values) {
        if (ruleBuilder_ == null) {
          ensureRuleIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, rule_);
          onChanged();
        } else {
          ruleBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder clearRule() {
        if (ruleBuilder_ == null) {
          rule_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          ruleBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public Builder removeRule(int index) {
        if (ruleBuilder_ == null) {
          ensureRuleIsMutable();
          rule_.remove(index);
          onChanged();
        } else {
          ruleBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder getRuleBuilder(
          int index) {
        return getRuleFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder getRuleOrBuilder(
          int index) {
        if (ruleBuilder_ == null) {
          return rule_.get(index);  } else {
          return ruleBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder> 
           getRuleOrBuilderList() {
        if (ruleBuilder_ != null) {
          return ruleBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(rule_);
        }
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder addRuleBuilder() {
        return getRuleFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder addRuleBuilder(
          int index) {
        return getRuleFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * Only contains documented rule definitions
       * </pre>
       *
       * <code>repeated .blaze_query.RuleDefinition rule = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder> 
           getRuleBuilderList() {
        return getRuleFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder> 
          getRuleFieldBuilder() {
        if (ruleBuilder_ == null) {
          ruleBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinition.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.RuleDefinitionOrBuilder>(
                  rule_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          rule_ = null;
        }
        return ruleBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.BuildLanguage)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.BuildLanguage)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.BuildLanguage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <code>optional int32 start_offset = 1;</code>
     */
    boolean hasStartOffset();
    /**
     * <code>optional int32 start_offset = 1;</code>
     */
    int getStartOffset();

    /**
     * <code>optional int32 start_line = 2;</code>
     */
    boolean hasStartLine();
    /**
     * <code>optional int32 start_line = 2;</code>
     */
    int getStartLine();

    /**
     * <code>optional int32 start_column = 3;</code>
     */
    boolean hasStartColumn();
    /**
     * <code>optional int32 start_column = 3;</code>
     */
    int getStartColumn();

    /**
     * <code>optional int32 end_offset = 4;</code>
     */
    boolean hasEndOffset();
    /**
     * <code>optional int32 end_offset = 4;</code>
     */
    int getEndOffset();

    /**
     * <code>optional int32 end_line = 5;</code>
     */
    boolean hasEndLine();
    /**
     * <code>optional int32 end_line = 5;</code>
     */
    int getEndLine();

    /**
     * <code>optional int32 end_column = 6;</code>
     */
    boolean hasEndColumn();
    /**
     * <code>optional int32 end_column = 6;</code>
     */
    int getEndColumn();
  }
  /**
   * Protobuf type {@code blaze_query.Location}
   */
  public  static final class Location extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.Location)
      LocationOrBuilder {
    // Use Location.newBuilder() to construct.
    private Location(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Location() {
      startOffset_ = 0;
      startLine_ = 0;
      startColumn_ = 0;
      endOffset_ = 0;
      endLine_ = 0;
      endColumn_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Location(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              startOffset_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              startLine_ = input.readInt32();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              startColumn_ = input.readInt32();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              endOffset_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              endLine_ = input.readInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              endColumn_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Location_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Location_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder.class);
    }

    private int bitField0_;
    public static final int START_OFFSET_FIELD_NUMBER = 1;
    private int startOffset_;
    /**
     * <code>optional int32 start_offset = 1;</code>
     */
    public boolean hasStartOffset() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int32 start_offset = 1;</code>
     */
    public int getStartOffset() {
      return startOffset_;
    }

    public static final int START_LINE_FIELD_NUMBER = 2;
    private int startLine_;
    /**
     * <code>optional int32 start_line = 2;</code>
     */
    public boolean hasStartLine() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 start_line = 2;</code>
     */
    public int getStartLine() {
      return startLine_;
    }

    public static final int START_COLUMN_FIELD_NUMBER = 3;
    private int startColumn_;
    /**
     * <code>optional int32 start_column = 3;</code>
     */
    public boolean hasStartColumn() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional int32 start_column = 3;</code>
     */
    public int getStartColumn() {
      return startColumn_;
    }

    public static final int END_OFFSET_FIELD_NUMBER = 4;
    private int endOffset_;
    /**
     * <code>optional int32 end_offset = 4;</code>
     */
    public boolean hasEndOffset() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 end_offset = 4;</code>
     */
    public int getEndOffset() {
      return endOffset_;
    }

    public static final int END_LINE_FIELD_NUMBER = 5;
    private int endLine_;
    /**
     * <code>optional int32 end_line = 5;</code>
     */
    public boolean hasEndLine() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 end_line = 5;</code>
     */
    public int getEndLine() {
      return endLine_;
    }

    public static final int END_COLUMN_FIELD_NUMBER = 6;
    private int endColumn_;
    /**
     * <code>optional int32 end_column = 6;</code>
     */
    public boolean hasEndColumn() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 end_column = 6;</code>
     */
    public int getEndColumn() {
      return endColumn_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt32(1, startOffset_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, startLine_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, startColumn_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, endOffset_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, endLine_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(6, endColumn_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, startOffset_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, startLine_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, startColumn_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, endOffset_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, endLine_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, endColumn_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Location)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Location other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Location) obj;

      boolean result = true;
      result = result && (hasStartOffset() == other.hasStartOffset());
      if (hasStartOffset()) {
        result = result && (getStartOffset()
            == other.getStartOffset());
      }
      result = result && (hasStartLine() == other.hasStartLine());
      if (hasStartLine()) {
        result = result && (getStartLine()
            == other.getStartLine());
      }
      result = result && (hasStartColumn() == other.hasStartColumn());
      if (hasStartColumn()) {
        result = result && (getStartColumn()
            == other.getStartColumn());
      }
      result = result && (hasEndOffset() == other.hasEndOffset());
      if (hasEndOffset()) {
        result = result && (getEndOffset()
            == other.getEndOffset());
      }
      result = result && (hasEndLine() == other.hasEndLine());
      if (hasEndLine()) {
        result = result && (getEndLine()
            == other.getEndLine());
      }
      result = result && (hasEndColumn() == other.hasEndColumn());
      if (hasEndColumn()) {
        result = result && (getEndColumn()
            == other.getEndColumn());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasStartOffset()) {
        hash = (37 * hash) + START_OFFSET_FIELD_NUMBER;
        hash = (53 * hash) + getStartOffset();
      }
      if (hasStartLine()) {
        hash = (37 * hash) + START_LINE_FIELD_NUMBER;
        hash = (53 * hash) + getStartLine();
      }
      if (hasStartColumn()) {
        hash = (37 * hash) + START_COLUMN_FIELD_NUMBER;
        hash = (53 * hash) + getStartColumn();
      }
      if (hasEndOffset()) {
        hash = (37 * hash) + END_OFFSET_FIELD_NUMBER;
        hash = (53 * hash) + getEndOffset();
      }
      if (hasEndLine()) {
        hash = (37 * hash) + END_LINE_FIELD_NUMBER;
        hash = (53 * hash) + getEndLine();
      }
      if (hasEndColumn()) {
        hash = (37 * hash) + END_COLUMN_FIELD_NUMBER;
        hash = (53 * hash) + getEndColumn();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.Location}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.Location)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Location_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Location_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        startOffset_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        startLine_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        startColumn_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        endOffset_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        endLine_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        endColumn_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Location_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Location result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Location result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Location(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.startOffset_ = startOffset_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.startLine_ = startLine_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.startColumn_ = startColumn_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.endOffset_ = endOffset_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.endLine_ = endLine_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.endColumn_ = endColumn_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Location) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.Location)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance()) return this;
        if (other.hasStartOffset()) {
          setStartOffset(other.getStartOffset());
        }
        if (other.hasStartLine()) {
          setStartLine(other.getStartLine());
        }
        if (other.hasStartColumn()) {
          setStartColumn(other.getStartColumn());
        }
        if (other.hasEndOffset()) {
          setEndOffset(other.getEndOffset());
        }
        if (other.hasEndLine()) {
          setEndLine(other.getEndLine());
        }
        if (other.hasEndColumn()) {
          setEndColumn(other.getEndColumn());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Location parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Location) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int startOffset_ ;
      /**
       * <code>optional int32 start_offset = 1;</code>
       */
      public boolean hasStartOffset() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int32 start_offset = 1;</code>
       */
      public int getStartOffset() {
        return startOffset_;
      }
      /**
       * <code>optional int32 start_offset = 1;</code>
       */
      public Builder setStartOffset(int value) {
        bitField0_ |= 0x00000001;
        startOffset_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 start_offset = 1;</code>
       */
      public Builder clearStartOffset() {
        bitField0_ = (bitField0_ & ~0x00000001);
        startOffset_ = 0;
        onChanged();
        return this;
      }

      private int startLine_ ;
      /**
       * <code>optional int32 start_line = 2;</code>
       */
      public boolean hasStartLine() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int32 start_line = 2;</code>
       */
      public int getStartLine() {
        return startLine_;
      }
      /**
       * <code>optional int32 start_line = 2;</code>
       */
      public Builder setStartLine(int value) {
        bitField0_ |= 0x00000002;
        startLine_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 start_line = 2;</code>
       */
      public Builder clearStartLine() {
        bitField0_ = (bitField0_ & ~0x00000002);
        startLine_ = 0;
        onChanged();
        return this;
      }

      private int startColumn_ ;
      /**
       * <code>optional int32 start_column = 3;</code>
       */
      public boolean hasStartColumn() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 start_column = 3;</code>
       */
      public int getStartColumn() {
        return startColumn_;
      }
      /**
       * <code>optional int32 start_column = 3;</code>
       */
      public Builder setStartColumn(int value) {
        bitField0_ |= 0x00000004;
        startColumn_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 start_column = 3;</code>
       */
      public Builder clearStartColumn() {
        bitField0_ = (bitField0_ & ~0x00000004);
        startColumn_ = 0;
        onChanged();
        return this;
      }

      private int endOffset_ ;
      /**
       * <code>optional int32 end_offset = 4;</code>
       */
      public boolean hasEndOffset() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 end_offset = 4;</code>
       */
      public int getEndOffset() {
        return endOffset_;
      }
      /**
       * <code>optional int32 end_offset = 4;</code>
       */
      public Builder setEndOffset(int value) {
        bitField0_ |= 0x00000008;
        endOffset_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 end_offset = 4;</code>
       */
      public Builder clearEndOffset() {
        bitField0_ = (bitField0_ & ~0x00000008);
        endOffset_ = 0;
        onChanged();
        return this;
      }

      private int endLine_ ;
      /**
       * <code>optional int32 end_line = 5;</code>
       */
      public boolean hasEndLine() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 end_line = 5;</code>
       */
      public int getEndLine() {
        return endLine_;
      }
      /**
       * <code>optional int32 end_line = 5;</code>
       */
      public Builder setEndLine(int value) {
        bitField0_ |= 0x00000010;
        endLine_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 end_line = 5;</code>
       */
      public Builder clearEndLine() {
        bitField0_ = (bitField0_ & ~0x00000010);
        endLine_ = 0;
        onChanged();
        return this;
      }

      private int endColumn_ ;
      /**
       * <code>optional int32 end_column = 6;</code>
       */
      public boolean hasEndColumn() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int32 end_column = 6;</code>
       */
      public int getEndColumn() {
        return endColumn_;
      }
      /**
       * <code>optional int32 end_column = 6;</code>
       */
      public Builder setEndColumn(int value) {
        bitField0_ |= 0x00000020;
        endColumn_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 end_column = 6;</code>
       */
      public Builder clearEndColumn() {
        bitField0_ = (bitField0_ & ~0x00000020);
        endColumn_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.Location)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.Location)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.Location DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Location();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MakeVarBindingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.MakeVarBinding)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string value = 1;</code>
     */
    boolean hasValue();
    /**
     * <code>required string value = 1;</code>
     */
    java.lang.String getValue();
    /**
     * <code>required string value = 1;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <code>required string platform_set_regexp = 2;</code>
     */
    boolean hasPlatformSetRegexp();
    /**
     * <code>required string platform_set_regexp = 2;</code>
     */
    java.lang.String getPlatformSetRegexp();
    /**
     * <code>required string platform_set_regexp = 2;</code>
     */
    com.google.protobuf.ByteString
        getPlatformSetRegexpBytes();
  }
  /**
   * Protobuf type {@code blaze_query.MakeVarBinding}
   */
  public  static final class MakeVarBinding extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.MakeVarBinding)
      MakeVarBindingOrBuilder {
    // Use MakeVarBinding.newBuilder() to construct.
    private MakeVarBinding(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MakeVarBinding() {
      value_ = "";
      platformSetRegexp_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MakeVarBinding(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              value_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              platformSetRegexp_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVarBinding_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVarBinding_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder.class);
    }

    private int bitField0_;
    public static final int VALUE_FIELD_NUMBER = 1;
    private volatile java.lang.Object value_;
    /**
     * <code>required string value = 1;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string value = 1;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string value = 1;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PLATFORM_SET_REGEXP_FIELD_NUMBER = 2;
    private volatile java.lang.Object platformSetRegexp_;
    /**
     * <code>required string platform_set_regexp = 2;</code>
     */
    public boolean hasPlatformSetRegexp() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string platform_set_regexp = 2;</code>
     */
    public java.lang.String getPlatformSetRegexp() {
      java.lang.Object ref = platformSetRegexp_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          platformSetRegexp_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string platform_set_regexp = 2;</code>
     */
    public com.google.protobuf.ByteString
        getPlatformSetRegexpBytes() {
      java.lang.Object ref = platformSetRegexp_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        platformSetRegexp_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, value_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, platformSetRegexp_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, value_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, platformSetRegexp_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding) obj;

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

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

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.MakeVarBinding}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.MakeVarBinding)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVarBinding_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVarBinding_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        platformSetRegexp_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVarBinding_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.platformSetRegexp_ = platformSetRegexp_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.getDefaultInstance()) return this;
        if (other.hasValue()) {
          bitField0_ |= 0x00000001;
          value_ = other.value_;
          onChanged();
        }
        if (other.hasPlatformSetRegexp()) {
          bitField0_ |= 0x00000002;
          platformSetRegexp_ = other.platformSetRegexp_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object value_ = "";
      /**
       * <code>required string value = 1;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string value = 1;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string value = 1;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string value = 1;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 1;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>required string value = 1;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object platformSetRegexp_ = "";
      /**
       * <code>required string platform_set_regexp = 2;</code>
       */
      public boolean hasPlatformSetRegexp() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string platform_set_regexp = 2;</code>
       */
      public java.lang.String getPlatformSetRegexp() {
        java.lang.Object ref = platformSetRegexp_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            platformSetRegexp_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string platform_set_regexp = 2;</code>
       */
      public com.google.protobuf.ByteString
          getPlatformSetRegexpBytes() {
        java.lang.Object ref = platformSetRegexp_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          platformSetRegexp_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string platform_set_regexp = 2;</code>
       */
      public Builder setPlatformSetRegexp(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        platformSetRegexp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string platform_set_regexp = 2;</code>
       */
      public Builder clearPlatformSetRegexp() {
        bitField0_ = (bitField0_ & ~0x00000002);
        platformSetRegexp_ = getDefaultInstance().getPlatformSetRegexp();
        onChanged();
        return this;
      }
      /**
       * <code>required string platform_set_regexp = 2;</code>
       */
      public Builder setPlatformSetRegexpBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        platformSetRegexp_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.MakeVarBinding)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.MakeVarBinding)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MakeVarOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.MakeVar)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding> 
        getBindingList();
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding getBinding(int index);
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    int getBindingCount();
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder> 
        getBindingOrBuilderList();
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder getBindingOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code blaze_query.MakeVar}
   */
  public  static final class MakeVar extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.MakeVar)
      MakeVarOrBuilder {
    // Use MakeVar.newBuilder() to construct.
    private MakeVar(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MakeVar() {
      name_ = "";
      binding_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MakeVar(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                binding_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding>();
                mutable_bitField0_ |= 0x00000002;
              }
              binding_.add(
                  input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          binding_ = java.util.Collections.unmodifiableList(binding_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVar_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVar_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BINDING_FIELD_NUMBER = 2;
    private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding> binding_;
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding> getBindingList() {
      return binding_;
    }
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder> 
        getBindingOrBuilderList() {
      return binding_;
    }
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    public int getBindingCount() {
      return binding_.size();
    }
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding getBinding(int index) {
      return binding_.get(index);
    }
    /**
     * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder getBindingOrBuilder(
        int index) {
      return binding_.get(index);
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < binding_.size(); i++) {
        output.writeMessage(2, binding_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      for (int i = 0; i < binding_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, binding_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (getBindingCount() > 0) {
        hash = (37 * hash) + BINDING_FIELD_NUMBER;
        hash = (53 * hash) + getBindingList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.MakeVar}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.MakeVar)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVar_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVar_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBindingFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (bindingBuilder_ == null) {
          binding_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          bindingBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_MakeVar_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (bindingBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            binding_ = java.util.Collections.unmodifiableList(binding_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.binding_ = binding_;
        } else {
          result.binding_ = bindingBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (bindingBuilder_ == null) {
          if (!other.binding_.isEmpty()) {
            if (binding_.isEmpty()) {
              binding_ = other.binding_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureBindingIsMutable();
              binding_.addAll(other.binding_);
            }
            onChanged();
          }
        } else {
          if (!other.binding_.isEmpty()) {
            if (bindingBuilder_.isEmpty()) {
              bindingBuilder_.dispose();
              bindingBuilder_ = null;
              binding_ = other.binding_;
              bitField0_ = (bitField0_ & ~0x00000002);
              bindingBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBindingFieldBuilder() : null;
            } else {
              bindingBuilder_.addAllMessages(other.binding_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding> binding_ =
        java.util.Collections.emptyList();
      private void ensureBindingIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          binding_ = new java.util.ArrayList<com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding>(binding_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder> bindingBuilder_;

      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding> getBindingList() {
        if (bindingBuilder_ == null) {
          return java.util.Collections.unmodifiableList(binding_);
        } else {
          return bindingBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public int getBindingCount() {
        if (bindingBuilder_ == null) {
          return binding_.size();
        } else {
          return bindingBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding getBinding(int index) {
        if (bindingBuilder_ == null) {
          return binding_.get(index);
        } else {
          return bindingBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder setBinding(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding value) {
        if (bindingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBindingIsMutable();
          binding_.set(index, value);
          onChanged();
        } else {
          bindingBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder setBinding(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder builderForValue) {
        if (bindingBuilder_ == null) {
          ensureBindingIsMutable();
          binding_.set(index, builderForValue.build());
          onChanged();
        } else {
          bindingBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder addBinding(com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding value) {
        if (bindingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBindingIsMutable();
          binding_.add(value);
          onChanged();
        } else {
          bindingBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder addBinding(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding value) {
        if (bindingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBindingIsMutable();
          binding_.add(index, value);
          onChanged();
        } else {
          bindingBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder addBinding(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder builderForValue) {
        if (bindingBuilder_ == null) {
          ensureBindingIsMutable();
          binding_.add(builderForValue.build());
          onChanged();
        } else {
          bindingBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder addBinding(
          int index, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder builderForValue) {
        if (bindingBuilder_ == null) {
          ensureBindingIsMutable();
          binding_.add(index, builderForValue.build());
          onChanged();
        } else {
          bindingBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder addAllBinding(
          java.lang.Iterable<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding> values) {
        if (bindingBuilder_ == null) {
          ensureBindingIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, binding_);
          onChanged();
        } else {
          bindingBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder clearBinding() {
        if (bindingBuilder_ == null) {
          binding_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          bindingBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public Builder removeBinding(int index) {
        if (bindingBuilder_ == null) {
          ensureBindingIsMutable();
          binding_.remove(index);
          onChanged();
        } else {
          bindingBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder getBindingBuilder(
          int index) {
        return getBindingFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder getBindingOrBuilder(
          int index) {
        if (bindingBuilder_ == null) {
          return binding_.get(index);  } else {
          return bindingBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder> 
           getBindingOrBuilderList() {
        if (bindingBuilder_ != null) {
          return bindingBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(binding_);
        }
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder addBindingBuilder() {
        return getBindingFieldBuilder().addBuilder(
            com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.getDefaultInstance());
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder addBindingBuilder(
          int index) {
        return getBindingFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.getDefaultInstance());
      }
      /**
       * <code>repeated .blaze_query.MakeVarBinding binding = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder> 
           getBindingBuilderList() {
        return getBindingFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder> 
          getBindingFieldBuilder() {
        if (bindingBuilder_ == null) {
          bindingBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBinding.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVarBindingOrBuilder>(
                  binding_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          binding_ = null;
        }
        return bindingBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.MakeVar)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.MakeVar)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.MakeVar getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GlobCriteriaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.GlobCriteria)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * List of includes (or items if this criteria did not come from a glob)
     * </pre>
     *
     * <code>repeated string include = 1;</code>
     */
    java.util.List<java.lang.String>
        getIncludeList();
    /**
     * <pre>
     * List of includes (or items if this criteria did not come from a glob)
     * </pre>
     *
     * <code>repeated string include = 1;</code>
     */
    int getIncludeCount();
    /**
     * <pre>
     * List of includes (or items if this criteria did not come from a glob)
     * </pre>
     *
     * <code>repeated string include = 1;</code>
     */
    java.lang.String getInclude(int index);
    /**
     * <pre>
     * List of includes (or items if this criteria did not come from a glob)
     * </pre>
     *
     * <code>repeated string include = 1;</code>
     */
    com.google.protobuf.ByteString
        getIncludeBytes(int index);

    /**
     * <pre>
     * List of exclude expressions
     * </pre>
     *
     * <code>repeated string exclude = 2;</code>
     */
    java.util.List<java.lang.String>
        getExcludeList();
    /**
     * <pre>
     * List of exclude expressions
     * </pre>
     *
     * <code>repeated string exclude = 2;</code>
     */
    int getExcludeCount();
    /**
     * <pre>
     * List of exclude expressions
     * </pre>
     *
     * <code>repeated string exclude = 2;</code>
     */
    java.lang.String getExclude(int index);
    /**
     * <pre>
     * List of exclude expressions
     * </pre>
     *
     * <code>repeated string exclude = 2;</code>
     */
    com.google.protobuf.ByteString
        getExcludeBytes(int index);

    /**
     * <pre>
     * Whether this message came from a glob
     * </pre>
     *
     * <code>optional bool glob = 3;</code>
     */
    boolean hasGlob();
    /**
     * <pre>
     * Whether this message came from a glob
     * </pre>
     *
     * <code>optional bool glob = 3;</code>
     */
    boolean getGlob();
  }
  /**
   * Protobuf type {@code blaze_query.GlobCriteria}
   */
  public  static final class GlobCriteria extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.GlobCriteria)
      GlobCriteriaOrBuilder {
    // Use GlobCriteria.newBuilder() to construct.
    private GlobCriteria(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GlobCriteria() {
      include_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      exclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      glob_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GlobCriteria(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                include_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              include_.add(bs);
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                exclude_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              exclude_.add(bs);
              break;
            }
            case 24: {
              bitField0_ |= 0x00000001;
              glob_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          include_ = include_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          exclude_ = exclude_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GlobCriteria_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GlobCriteria_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder.class);
    }

    private int bitField0_;
    public static final int INCLUDE_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList include_;
    /**
     * <pre>
     * List of includes (or items if this criteria did not come from a glob)
     * </pre>
     *
     * <code>repeated string include = 1;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getIncludeList() {
      return include_;
    }
    /**
     * <pre>
     * List of includes (or items if this criteria did not come from a glob)
     * </pre>
     *
     * <code>repeated string include = 1;</code>
     */
    public int getIncludeCount() {
      return include_.size();
    }
    /**
     * <pre>
     * List of includes (or items if this criteria did not come from a glob)
     * </pre>
     *
     * <code>repeated string include = 1;</code>
     */
    public java.lang.String getInclude(int index) {
      return include_.get(index);
    }
    /**
     * <pre>
     * List of includes (or items if this criteria did not come from a glob)
     * </pre>
     *
     * <code>repeated string include = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIncludeBytes(int index) {
      return include_.getByteString(index);
    }

    public static final int EXCLUDE_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList exclude_;
    /**
     * <pre>
     * List of exclude expressions
     * </pre>
     *
     * <code>repeated string exclude = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getExcludeList() {
      return exclude_;
    }
    /**
     * <pre>
     * List of exclude expressions
     * </pre>
     *
     * <code>repeated string exclude = 2;</code>
     */
    public int getExcludeCount() {
      return exclude_.size();
    }
    /**
     * <pre>
     * List of exclude expressions
     * </pre>
     *
     * <code>repeated string exclude = 2;</code>
     */
    public java.lang.String getExclude(int index) {
      return exclude_.get(index);
    }
    /**
     * <pre>
     * List of exclude expressions
     * </pre>
     *
     * <code>repeated string exclude = 2;</code>
     */
    public com.google.protobuf.ByteString
        getExcludeBytes(int index) {
      return exclude_.getByteString(index);
    }

    public static final int GLOB_FIELD_NUMBER = 3;
    private boolean glob_;
    /**
     * <pre>
     * Whether this message came from a glob
     * </pre>
     *
     * <code>optional bool glob = 3;</code>
     */
    public boolean hasGlob() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Whether this message came from a glob
     * </pre>
     *
     * <code>optional bool glob = 3;</code>
     */
    public boolean getGlob() {
      return glob_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < include_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, include_.getRaw(i));
      }
      for (int i = 0; i < exclude_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, exclude_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBool(3, glob_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < include_.size(); i++) {
          dataSize += computeStringSizeNoTag(include_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getIncludeList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < exclude_.size(); i++) {
          dataSize += computeStringSizeNoTag(exclude_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExcludeList().size();
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, glob_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria) obj;

      boolean result = true;
      result = result && getIncludeList()
          .equals(other.getIncludeList());
      result = result && getExcludeList()
          .equals(other.getExcludeList());
      result = result && (hasGlob() == other.hasGlob());
      if (hasGlob()) {
        result = result && (getGlob()
            == other.getGlob());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getIncludeCount() > 0) {
        hash = (37 * hash) + INCLUDE_FIELD_NUMBER;
        hash = (53 * hash) + getIncludeList().hashCode();
      }
      if (getExcludeCount() > 0) {
        hash = (37 * hash) + EXCLUDE_FIELD_NUMBER;
        hash = (53 * hash) + getExcludeList().hashCode();
      }
      if (hasGlob()) {
        hash = (37 * hash) + GLOB_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getGlob());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.GlobCriteria}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.GlobCriteria)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteriaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GlobCriteria_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GlobCriteria_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        include_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        exclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        glob_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_GlobCriteria_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          include_ = include_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.include_ = include_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          exclude_ = exclude_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.exclude_ = exclude_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000001;
        }
        result.glob_ = glob_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria.getDefaultInstance()) return this;
        if (!other.include_.isEmpty()) {
          if (include_.isEmpty()) {
            include_ = other.include_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureIncludeIsMutable();
            include_.addAll(other.include_);
          }
          onChanged();
        }
        if (!other.exclude_.isEmpty()) {
          if (exclude_.isEmpty()) {
            exclude_ = other.exclude_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureExcludeIsMutable();
            exclude_.addAll(other.exclude_);
          }
          onChanged();
        }
        if (other.hasGlob()) {
          setGlob(other.getGlob());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList include_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureIncludeIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          include_ = new com.google.protobuf.LazyStringArrayList(include_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getIncludeList() {
        return include_.getUnmodifiableView();
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public int getIncludeCount() {
        return include_.size();
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public java.lang.String getInclude(int index) {
        return include_.get(index);
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIncludeBytes(int index) {
        return include_.getByteString(index);
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public Builder setInclude(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIncludeIsMutable();
        include_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public Builder addInclude(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIncludeIsMutable();
        include_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public Builder addAllInclude(
          java.lang.Iterable<java.lang.String> values) {
        ensureIncludeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, include_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public Builder clearInclude() {
        include_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of includes (or items if this criteria did not come from a glob)
       * </pre>
       *
       * <code>repeated string include = 1;</code>
       */
      public Builder addIncludeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureIncludeIsMutable();
        include_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList exclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureExcludeIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          exclude_ = new com.google.protobuf.LazyStringArrayList(exclude_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getExcludeList() {
        return exclude_.getUnmodifiableView();
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public int getExcludeCount() {
        return exclude_.size();
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public java.lang.String getExclude(int index) {
        return exclude_.get(index);
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public com.google.protobuf.ByteString
          getExcludeBytes(int index) {
        return exclude_.getByteString(index);
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public Builder setExclude(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExcludeIsMutable();
        exclude_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public Builder addExclude(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExcludeIsMutable();
        exclude_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public Builder addAllExclude(
          java.lang.Iterable<java.lang.String> values) {
        ensureExcludeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, exclude_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public Builder clearExclude() {
        exclude_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of exclude expressions
       * </pre>
       *
       * <code>repeated string exclude = 2;</code>
       */
      public Builder addExcludeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExcludeIsMutable();
        exclude_.add(value);
        onChanged();
        return this;
      }

      private boolean glob_ ;
      /**
       * <pre>
       * Whether this message came from a glob
       * </pre>
       *
       * <code>optional bool glob = 3;</code>
       */
      public boolean hasGlob() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * Whether this message came from a glob
       * </pre>
       *
       * <code>optional bool glob = 3;</code>
       */
      public boolean getGlob() {
        return glob_;
      }
      /**
       * <pre>
       * Whether this message came from a glob
       * </pre>
       *
       * <code>optional bool glob = 3;</code>
       */
      public Builder setGlob(boolean value) {
        bitField0_ |= 0x00000004;
        glob_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether this message came from a glob
       * </pre>
       *
       * <code>optional bool glob = 3;</code>
       */
      public Builder clearGlob() {
        bitField0_ = (bitField0_ & ~0x00000004);
        glob_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.GlobCriteria)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.GlobCriteria)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.GlobCriteria getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:blaze_query.Event)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .blaze_query.Event.EventKind kind = 1;</code>
     */
    boolean hasKind();
    /**
     * <code>required .blaze_query.Event.EventKind kind = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind getKind();

    /**
     * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
     */
    boolean hasDEPRECATEDLocation();
    /**
     * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDLocation();
    /**
     * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDLocationOrBuilder();

    /**
     * <code>optional string message = 3;</code>
     */
    boolean hasMessage();
    /**
     * <code>optional string message = 3;</code>
     */
    java.lang.String getMessage();
    /**
     * <code>optional string message = 3;</code>
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * Protobuf type {@code blaze_query.Event}
   */
  public  static final class Event extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:blaze_query.Event)
      EventOrBuilder {
    // Use Event.newBuilder() to construct.
    private Event(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Event() {
      kind_ = 1;
      message_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Event(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind value = com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                kind_ = rawValue;
              }
              break;
            }
            case 18: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = dEPRECATEDLocation_.toBuilder();
              }
              dEPRECATEDLocation_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dEPRECATEDLocation_);
                dEPRECATEDLocation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              message_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Event_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Event_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.Builder.class);
    }

    /**
     * Protobuf enum {@code blaze_query.Event.EventKind}
     */
    public enum EventKind
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>ERROR = 1;</code>
       */
      ERROR(1),
      /**
       * <code>WARNING = 2;</code>
       */
      WARNING(2),
      /**
       * <code>INFO = 3;</code>
       */
      INFO(3),
      /**
       * <code>PROGRESS = 4;</code>
       */
      PROGRESS(4),
      ;

      /**
       * <code>ERROR = 1;</code>
       */
      public static final int ERROR_VALUE = 1;
      /**
       * <code>WARNING = 2;</code>
       */
      public static final int WARNING_VALUE = 2;
      /**
       * <code>INFO = 3;</code>
       */
      public static final int INFO_VALUE = 3;
      /**
       * <code>PROGRESS = 4;</code>
       */
      public static final int PROGRESS_VALUE = 4;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EventKind valueOf(int value) {
        return forNumber(value);
      }

      public static EventKind forNumber(int value) {
        switch (value) {
          case 1: return ERROR;
          case 2: return WARNING;
          case 3: return INFO;
          case 4: return PROGRESS;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

      private EventKind(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:blaze_query.Event.EventKind)
    }

    private int bitField0_;
    public static final int KIND_FIELD_NUMBER = 1;
    private int kind_;
    /**
     * <code>required .blaze_query.Event.EventKind kind = 1;</code>
     */
    public boolean hasKind() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required .blaze_query.Event.EventKind kind = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind getKind() {
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind.valueOf(kind_);
      return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind.ERROR : result;
    }

    public static final int DEPRECATED_LOCATION_FIELD_NUMBER = 2;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDLocation_;
    /**
     * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
     */
    public boolean hasDEPRECATEDLocation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDLocation() {
      return dEPRECATEDLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDLocation_;
    }
    /**
     * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDLocationOrBuilder() {
      return dEPRECATEDLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDLocation_;
    }

    public static final int MESSAGE_FIELD_NUMBER = 3;
    private volatile java.lang.Object message_;
    /**
     * <code>optional string message = 3;</code>
     */
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string message = 3;</code>
     */
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          message_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string message = 3;</code>
     */
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

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

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, kind_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, getDEPRECATEDLocation());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, message_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, kind_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDEPRECATEDLocation());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, message_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Event)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.query2.proto.proto2api.Build.Event other = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Event) obj;

      boolean result = true;
      result = result && (hasKind() == other.hasKind());
      if (hasKind()) {
        result = result && kind_ == other.kind_;
      }
      result = result && (hasDEPRECATEDLocation() == other.hasDEPRECATEDLocation());
      if (hasDEPRECATEDLocation()) {
        result = result && getDEPRECATEDLocation()
            .equals(other.getDEPRECATEDLocation());
      }
      result = result && (hasMessage() == other.hasMessage());
      if (hasMessage()) {
        result = result && getMessage()
            .equals(other.getMessage());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + kind_;
      }
      if (hasDEPRECATEDLocation()) {
        hash = (37 * hash) + DEPRECATED_LOCATION_FIELD_NUMBER;
        hash = (53 * hash) + getDEPRECATEDLocation().hashCode();
      }
      if (hasMessage()) {
        hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMessage().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event 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 com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.query2.proto.proto2api.Build.Event prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code blaze_query.Event}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:blaze_query.Event)
        com.google.devtools.build.lib.query2.proto.proto2api.Build.EventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Event_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Event_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.class, com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDEPRECATEDLocationFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        kind_ = 1;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (dEPRECATEDLocationBuilder_ == null) {
          dEPRECATEDLocation_ = null;
        } else {
          dEPRECATEDLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        message_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.internal_static_blaze_query_Event_descriptor;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Event getDefaultInstanceForType() {
        return com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.getDefaultInstance();
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Event build() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Event result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Event buildPartial() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Event result = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Event(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.kind_ = kind_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (dEPRECATEDLocationBuilder_ == null) {
          result.dEPRECATEDLocation_ = dEPRECATEDLocation_;
        } else {
          result.dEPRECATEDLocation_ = dEPRECATEDLocationBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.message_ = message_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.query2.proto.proto2api.Build.Event) {
          return mergeFrom((com.google.devtools.build.lib.query2.proto.proto2api.Build.Event)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.query2.proto.proto2api.Build.Event other) {
        if (other == com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.getDefaultInstance()) return this;
        if (other.hasKind()) {
          setKind(other.getKind());
        }
        if (other.hasDEPRECATEDLocation()) {
          mergeDEPRECATEDLocation(other.getDEPRECATEDLocation());
        }
        if (other.hasMessage()) {
          bitField0_ |= 0x00000004;
          message_ = other.message_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Event parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.query2.proto.proto2api.Build.Event) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int kind_ = 1;
      /**
       * <code>required .blaze_query.Event.EventKind kind = 1;</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required .blaze_query.Event.EventKind kind = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind getKind() {
        com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind result = com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind.valueOf(kind_);
        return result == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind.ERROR : result;
      }
      /**
       * <code>required .blaze_query.Event.EventKind kind = 1;</code>
       */
      public Builder setKind(com.google.devtools.build.lib.query2.proto.proto2api.Build.Event.EventKind value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        kind_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .blaze_query.Event.EventKind kind = 1;</code>
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000001);
        kind_ = 1;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Location dEPRECATEDLocation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> dEPRECATEDLocationBuilder_;
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      public boolean hasDEPRECATEDLocation() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location getDEPRECATEDLocation() {
        if (dEPRECATEDLocationBuilder_ == null) {
          return dEPRECATEDLocation_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDLocation_;
        } else {
          return dEPRECATEDLocationBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      public Builder setDEPRECATEDLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDLocationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dEPRECATEDLocation_ = value;
          onChanged();
        } else {
          dEPRECATEDLocationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      public Builder setDEPRECATEDLocation(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder builderForValue) {
        if (dEPRECATEDLocationBuilder_ == null) {
          dEPRECATEDLocation_ = builderForValue.build();
          onChanged();
        } else {
          dEPRECATEDLocationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      public Builder mergeDEPRECATEDLocation(com.google.devtools.build.lib.query2.proto.proto2api.Build.Location value) {
        if (dEPRECATEDLocationBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              dEPRECATEDLocation_ != null &&
              dEPRECATEDLocation_ != com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance()) {
            dEPRECATEDLocation_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.newBuilder(dEPRECATEDLocation_).mergeFrom(value).buildPartial();
          } else {
            dEPRECATEDLocation_ = value;
          }
          onChanged();
        } else {
          dEPRECATEDLocationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      public Builder clearDEPRECATEDLocation() {
        if (dEPRECATEDLocationBuilder_ == null) {
          dEPRECATEDLocation_ = null;
          onChanged();
        } else {
          dEPRECATEDLocationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder getDEPRECATEDLocationBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getDEPRECATEDLocationFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder getDEPRECATEDLocationOrBuilder() {
        if (dEPRECATEDLocationBuilder_ != null) {
          return dEPRECATEDLocationBuilder_.getMessageOrBuilder();
        } else {
          return dEPRECATEDLocation_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.getDefaultInstance() : dEPRECATEDLocation_;
        }
      }
      /**
       * <code>optional .blaze_query.Location DEPRECATED_location = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder> 
          getDEPRECATEDLocationFieldBuilder() {
        if (dEPRECATEDLocationBuilder_ == null) {
          dEPRECATEDLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Location, com.google.devtools.build.lib.query2.proto.proto2api.Build.Location.Builder, com.google.devtools.build.lib.query2.proto.proto2api.Build.LocationOrBuilder>(
                  getDEPRECATEDLocation(),
                  getParentForChildren(),
                  isClean());
          dEPRECATEDLocation_ = null;
        }
        return dEPRECATEDLocationBuilder_;
      }

      private java.lang.Object message_ = "";
      /**
       * <code>optional string message = 3;</code>
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string message = 3;</code>
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            message_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string message = 3;</code>
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string message = 3;</code>
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        message_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string message = 3;</code>
       */
      public Builder clearMessage() {
        bitField0_ = (bitField0_ & ~0x00000004);
        message_ = getDefaultInstance().getMessage();
        onChanged();
        return this;
      }
      /**
       * <code>optional string message = 3;</code>
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        message_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:blaze_query.Event)
    }

    // @@protoc_insertion_point(class_scope:blaze_query.Event)
    private static final com.google.devtools.build.lib.query2.proto.proto2api.Build.Event DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.query2.proto.proto2api.Build.Event();
    }

    public static com.google.devtools.build.lib.query2.proto.proto2api.Build.Event getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Event getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_License_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_License_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_StringDictEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_StringDictEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_StringDictUnaryEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_StringDictUnaryEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_LabelDictUnaryEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_LabelDictUnaryEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_LabelListDictEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_LabelListDictEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_StringListDictEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_StringListDictEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_FilesetEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_FilesetEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_Attribute_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_Attribute_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_Attribute_SelectorEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_Attribute_SelectorEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_Attribute_Selector_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_Attribute_Selector_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_Attribute_SelectorList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_Attribute_SelectorList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_Rule_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_Rule_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_AttributeAspect_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_AttributeAspect_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_SkylarkAspect_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_SkylarkAspect_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_RuleSummary_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_RuleSummary_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_PackageGroup_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_PackageGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_EnvironmentGroup_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_EnvironmentGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_SourceFile_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_SourceFile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_GeneratedFile_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_GeneratedFile_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_Target_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_Target_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_QueryResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_QueryResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_AllowedRuleClassInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_AllowedRuleClassInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_AttributeDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_AttributeDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_RuleDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_RuleDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_BuildLanguage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_BuildLanguage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_Location_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_Location_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_MakeVarBinding_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_MakeVarBinding_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_MakeVar_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_MakeVar_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_GlobCriteria_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_GlobCriteria_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_blaze_query_Event_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_blaze_query_Event_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\njbazel-out/local-fastbuild/bin/src/main" +
      "/protobuf/libbuild_java_proto_srcjar.src" +
      "jar.preprocessed/build.proto\022\013blaze_quer" +
      "y\"2\n\007License\022\024\n\014license_type\030\001 \003(\t\022\021\n\tex" +
      "ception\030\002 \003(\t\"-\n\017StringDictEntry\022\013\n\003key\030" +
      "\001 \002(\t\022\r\n\005value\030\002 \002(\t\"2\n\024StringDictUnaryE" +
      "ntry\022\013\n\003key\030\001 \002(\t\022\r\n\005value\030\002 \002(\t\"1\n\023Labe" +
      "lDictUnaryEntry\022\013\n\003key\030\001 \002(\t\022\r\n\005value\030\002 " +
      "\002(\t\"0\n\022LabelListDictEntry\022\013\n\003key\030\001 \002(\t\022\r" +
      "\n\005value\030\002 \003(\t\"1\n\023StringListDictEntry\022\013\n\003",
      "key\030\001 \002(\t\022\r\n\005value\030\002 \003(\t\"\202\002\n\014FilesetEntr" +
      "y\022\016\n\006source\030\001 \002(\t\022\035\n\025destination_directo" +
      "ry\030\002 \002(\t\022\025\n\rfiles_present\030\007 \001(\010\022\014\n\004file\030" +
      "\003 \003(\t\022\017\n\007exclude\030\004 \003(\t\022I\n\020symlink_behavi" +
      "or\030\005 \001(\0162).blaze_query.FilesetEntry.Syml" +
      "inkBehavior:\004COPY\022\024\n\014strip_prefix\030\006 \001(\t\"" +
      ",\n\017SymlinkBehavior\022\010\n\004COPY\020\001\022\017\n\013DEREFERE" +
      "NCE\020\002\"\242\021\n\tAttribute\022\014\n\004name\030\001 \002(\t\022<\n\035DEP" +
      "RECATED_parseable_location\030\014 \001(\0132\025.blaze" +
      "_query.Location\022\034\n\024explicitly_specified\030",
      "\r \001(\010\022\r\n\005nodep\030\024 \001(\010\0222\n\004type\030\002 \002(\0162$.bla" +
      "ze_query.Attribute.Discriminator\022\021\n\tint_" +
      "value\030\003 \001(\005\022\024\n\014string_value\030\005 \001(\t\022\025\n\rboo" +
      "lean_value\030\016 \001(\010\0227\n\016tristate_value\030\017 \001(\016" +
      "2\037.blaze_query.Attribute.Tristate\022\031\n\021str" +
      "ing_list_value\030\006 \003(\t\022%\n\007license\030\007 \001(\0132\024." +
      "blaze_query.License\0227\n\021string_dict_value" +
      "\030\010 \003(\0132\034.blaze_query.StringDictEntry\0225\n\022" +
      "fileset_list_value\030\t \003(\0132\031.blaze_query.F" +
      "ilesetEntry\022>\n\025label_list_dict_value\030\n \003",
      "(\0132\037.blaze_query.LabelListDictEntry\022@\n\026s" +
      "tring_list_dict_value\030\013 \003(\0132 .blaze_quer" +
      "y.StringListDictEntry\0220\n\rglob_criteria\030\020" +
      " \003(\0132\031.blaze_query.GlobCriteria\022\026\n\016int_l" +
      "ist_value\030\021 \003(\005\022B\n\027string_dict_unary_val" +
      "ue\030\022 \003(\0132!.blaze_query.StringDictUnaryEn" +
      "try\022@\n\026label_dict_unary_value\030\023 \003(\0132 .bl" +
      "aze_query.LabelDictUnaryEntry\022:\n\rselecto" +
      "r_list\030\025 \001(\0132#.blaze_query.Attribute.Sel" +
      "ectorList\032\265\005\n\rSelectorEntry\022\r\n\005label\030\001 \001",
      "(\t\022\030\n\020is_default_value\030\020 \001(\010\022\021\n\tint_valu" +
      "e\030\002 \001(\005\022\024\n\014string_value\030\003 \001(\t\022\025\n\rboolean" +
      "_value\030\004 \001(\010\0227\n\016tristate_value\030\005 \001(\0162\037.b" +
      "laze_query.Attribute.Tristate\022\031\n\021string_" +
      "list_value\030\006 \003(\t\022%\n\007license\030\007 \001(\0132\024.blaz" +
      "e_query.License\0227\n\021string_dict_value\030\010 \003" +
      "(\0132\034.blaze_query.StringDictEntry\0225\n\022file" +
      "set_list_value\030\t \003(\0132\031.blaze_query.Files" +
      "etEntry\022>\n\025label_list_dict_value\030\n \003(\0132\037" +
      ".blaze_query.LabelListDictEntry\022@\n\026strin",
      "g_list_dict_value\030\013 \003(\0132 .blaze_query.St" +
      "ringListDictEntry\0220\n\rglob_criteria\030\014 \003(\013" +
      "2\031.blaze_query.GlobCriteria\022\026\n\016int_list_" +
      "value\030\r \003(\005\022B\n\027string_dict_unary_value\030\016" +
      " \003(\0132!.blaze_query.StringDictUnaryEntry\022" +
      "@\n\026label_dict_unary_value\030\017 \003(\0132 .blaze_" +
      "query.LabelDictUnaryEntry\032t\n\010Selector\0225\n" +
      "\007entries\030\001 \003(\0132$.blaze_query.Attribute.S" +
      "electorEntry\022\031\n\021has_default_value\030\002 \001(\010\022" +
      "\026\n\016no_match_error\030\003 \001(\t\032u\n\014SelectorList\022",
      "2\n\004type\030\001 \001(\0162$.blaze_query.Attribute.Di" +
      "scriminator\0221\n\010elements\030\002 \003(\0132\037.blaze_qu" +
      "ery.Attribute.Selector\"\342\002\n\rDiscriminator" +
      "\022\013\n\007INTEGER\020\001\022\n\n\006STRING\020\002\022\t\n\005LABEL\020\003\022\n\n\006" +
      "OUTPUT\020\004\022\017\n\013STRING_LIST\020\005\022\016\n\nLABEL_LIST\020" +
      "\006\022\017\n\013OUTPUT_LIST\020\007\022\024\n\020DISTRIBUTION_SET\020\010" +
      "\022\013\n\007LICENSE\020\t\022\017\n\013STRING_DICT\020\n\022\026\n\022FILESE" +
      "T_ENTRY_LIST\020\013\022\023\n\017LABEL_LIST_DICT\020\014\022\024\n\020S" +
      "TRING_LIST_DICT\020\r\022\013\n\007BOOLEAN\020\016\022\014\n\010TRISTA" +
      "TE\020\017\022\020\n\014INTEGER_LIST\020\020\022\025\n\021STRING_DICT_UN",
      "ARY\020\021\022\013\n\007UNKNOWN\020\022\022\024\n\020LABEL_DICT_UNARY\020\023" +
      "\022\021\n\rSELECTOR_LIST\020\024\"%\n\010Tristate\022\006\n\002NO\020\000\022" +
      "\007\n\003YES\020\001\022\010\n\004AUTO\020\002\"\374\002\n\004Rule\022\014\n\004name\030\001 \002(" +
      "\t\022\022\n\nrule_class\030\002 \002(\t\022\020\n\010location\030\003 \001(\t\022" +
      ")\n\tattribute\030\004 \003(\0132\026.blaze_query.Attribu" +
      "te\022\022\n\nrule_input\030\005 \003(\t\022\023\n\013rule_output\030\006 " +
      "\003(\t\022\027\n\017default_setting\030\007 \003(\t\022<\n\035DEPRECAT" +
      "ED_parseable_location\030\010 \001(\0132\025.blaze_quer" +
      "y.Location\022\031\n\021public_by_default\030\t \001(\010\022\022\n" +
      "\nis_skylark\030\n \001(\010\022?\n\031skylark_attribute_a",
      "spects\030\013 \003(\0132\034.blaze_query.AttributeAspe" +
      "ct\022%\n\035skylark_environment_hash_code\030\014 \001(" +
      "\t\"U\n\017AttributeAspect\022\026\n\016attribute_name\030\001" +
      " \002(\t\022*\n\006aspect\030\002 \002(\0132\032.blaze_query.Skyla" +
      "rkAspect\"o\n\rSkylarkAspect\022\034\n\024extension_f" +
      "ile_label\030\001 \002(\t\022\025\n\rexported_name\030\002 \002(\t\022)" +
      "\n\tattribute\030\003 \003(\0132\026.blaze_query.Attribut" +
      "e\"g\n\013RuleSummary\022\037\n\004rule\030\001 \002(\0132\021.blaze_q" +
      "uery.Rule\022%\n\ndependency\030\002 \003(\0132\021.blaze_qu" +
      "ery.Rule\022\020\n\010location\030\003 \001(\t\"\225\001\n\014PackageGr",
      "oup\022\014\n\004name\030\001 \002(\t\022\031\n\021contained_package\030\002" +
      " \003(\t\022\036\n\026included_package_group\030\003 \003(\t\022<\n\035" +
      "DEPRECATED_parseable_location\030\004 \001(\0132\025.bl" +
      "aze_query.Location\"F\n\020EnvironmentGroup\022\014" +
      "\n\004name\030\001 \002(\t\022\023\n\013environment\030\002 \003(\t\022\017\n\007def" +
      "ault\030\003 \003(\t\"\210\002\n\nSourceFile\022\014\n\004name\030\001 \002(\t\022" +
      "\020\n\010location\030\002 \001(\t\022<\n\035DEPRECATED_parseabl" +
      "e_location\030\007 \001(\0132\025.blaze_query.Location\022" +
      "\022\n\nsubinclude\030\003 \003(\t\022\025\n\rpackage_group\030\004 \003" +
      "(\t\022\030\n\020visibility_label\030\005 \003(\t\022\017\n\007feature\030",
      "\006 \003(\t\022%\n\007license\030\010 \001(\0132\024.blaze_query.Lic" +
      "ense\022\037\n\027package_contains_errors\030\t \001(\010\"H\n" +
      "\rGeneratedFile\022\014\n\004name\030\001 \002(\t\022\027\n\017generati" +
      "ng_rule\030\002 \002(\t\022\020\n\010location\030\003 \001(\t\"\222\003\n\006Targ" +
      "et\022/\n\004type\030\001 \002(\0162!.blaze_query.Target.Di" +
      "scriminator\022\037\n\004rule\030\002 \001(\0132\021.blaze_query." +
      "Rule\022,\n\013source_file\030\003 \001(\0132\027.blaze_query." +
      "SourceFile\0222\n\016generated_file\030\004 \001(\0132\032.bla" +
      "ze_query.GeneratedFile\0220\n\rpackage_group\030" +
      "\005 \001(\0132\031.blaze_query.PackageGroup\0228\n\021envi",
      "ronment_group\030\006 \001(\0132\035.blaze_query.Enviro" +
      "nmentGroup\"h\n\rDiscriminator\022\010\n\004RULE\020\001\022\017\n" +
      "\013SOURCE_FILE\020\002\022\022\n\016GENERATED_FILE\020\003\022\021\n\rPA" +
      "CKAGE_GROUP\020\004\022\025\n\021ENVIRONMENT_GROUP\020\005\"2\n\013" +
      "QueryResult\022#\n\006target\030\001 \003(\0132\023.blaze_quer" +
      "y.Target\"\246\001\n\024AllowedRuleClassInfo\022D\n\006pol" +
      "icy\030\001 \002(\01624.blaze_query.AllowedRuleClass" +
      "Info.AllowedRuleClasses\022\032\n\022allowed_rule_" +
      "class\030\002 \003(\t\",\n\022AllowedRuleClasses\022\007\n\003ANY" +
      "\020\001\022\r\n\tSPECIFIED\020\002\"\302\001\n\023AttributeDefinitio",
      "n\022\014\n\004name\030\001 \002(\t\0222\n\004type\030\002 \002(\0162$.blaze_qu" +
      "ery.Attribute.Discriminator\022\021\n\tmandatory" +
      "\030\003 \002(\010\022?\n\024allowed_rule_classes\030\004 \001(\0132!.b" +
      "laze_query.AllowedRuleClassInfo\022\025\n\rdocum" +
      "entation\030\005 \001(\t\"y\n\016RuleDefinition\022\014\n\004name" +
      "\030\001 \002(\t\0223\n\tattribute\030\002 \003(\0132 .blaze_query." +
      "AttributeDefinition\022\025\n\rdocumentation\030\003 \001" +
      "(\t\022\r\n\005label\030\004 \001(\t\":\n\rBuildLanguage\022)\n\004ru" +
      "le\030\001 \003(\0132\033.blaze_query.RuleDefinition\"\204\001" +
      "\n\010Location\022\024\n\014start_offset\030\001 \001(\005\022\022\n\nstar",
      "t_line\030\002 \001(\005\022\024\n\014start_column\030\003 \001(\005\022\022\n\nen" +
      "d_offset\030\004 \001(\005\022\020\n\010end_line\030\005 \001(\005\022\022\n\nend_" +
      "column\030\006 \001(\005\"<\n\016MakeVarBinding\022\r\n\005value\030" +
      "\001 \002(\t\022\033\n\023platform_set_regexp\030\002 \002(\t\"E\n\007Ma" +
      "keVar\022\014\n\004name\030\001 \002(\t\022,\n\007binding\030\002 \003(\0132\033.b" +
      "laze_query.MakeVarBinding\">\n\014GlobCriteri" +
      "a\022\017\n\007include\030\001 \003(\t\022\017\n\007exclude\030\002 \003(\t\022\014\n\004g" +
      "lob\030\003 \001(\010\"\265\001\n\005Event\022*\n\004kind\030\001 \002(\0162\034.blaz" +
      "e_query.Event.EventKind\0222\n\023DEPRECATED_lo" +
      "cation\030\002 \001(\0132\025.blaze_query.Location\022\017\n\007m",
      "essage\030\003 \001(\t\";\n\tEventKind\022\t\n\005ERROR\020\001\022\013\n\007" +
      "WARNING\020\002\022\010\n\004INFO\020\003\022\014\n\010PROGRESS\020\004B6\n4com" +
      ".google.devtools.build.lib.query2.proto." +
      "proto2api"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_blaze_query_License_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_blaze_query_License_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_License_descriptor,
        new java.lang.String[] { "LicenseType", "Exception", });
    internal_static_blaze_query_StringDictEntry_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_blaze_query_StringDictEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_StringDictEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_blaze_query_StringDictUnaryEntry_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_blaze_query_StringDictUnaryEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_StringDictUnaryEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_blaze_query_LabelDictUnaryEntry_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_blaze_query_LabelDictUnaryEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_LabelDictUnaryEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_blaze_query_LabelListDictEntry_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_blaze_query_LabelListDictEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_LabelListDictEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_blaze_query_StringListDictEntry_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_blaze_query_StringListDictEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_StringListDictEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_blaze_query_FilesetEntry_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_blaze_query_FilesetEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_FilesetEntry_descriptor,
        new java.lang.String[] { "Source", "DestinationDirectory", "FilesPresent", "File", "Exclude", "SymlinkBehavior", "StripPrefix", });
    internal_static_blaze_query_Attribute_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_blaze_query_Attribute_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_Attribute_descriptor,
        new java.lang.String[] { "Name", "DEPRECATEDParseableLocation", "ExplicitlySpecified", "Nodep", "Type", "IntValue", "StringValue", "BooleanValue", "TristateValue", "StringListValue", "License", "StringDictValue", "FilesetListValue", "LabelListDictValue", "StringListDictValue", "GlobCriteria", "IntListValue", "StringDictUnaryValue", "LabelDictUnaryValue", "SelectorList", });
    internal_static_blaze_query_Attribute_SelectorEntry_descriptor =
      internal_static_blaze_query_Attribute_descriptor.getNestedTypes().get(0);
    internal_static_blaze_query_Attribute_SelectorEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_Attribute_SelectorEntry_descriptor,
        new java.lang.String[] { "Label", "IsDefaultValue", "IntValue", "StringValue", "BooleanValue", "TristateValue", "StringListValue", "License", "StringDictValue", "FilesetListValue", "LabelListDictValue", "StringListDictValue", "GlobCriteria", "IntListValue", "StringDictUnaryValue", "LabelDictUnaryValue", });
    internal_static_blaze_query_Attribute_Selector_descriptor =
      internal_static_blaze_query_Attribute_descriptor.getNestedTypes().get(1);
    internal_static_blaze_query_Attribute_Selector_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_Attribute_Selector_descriptor,
        new java.lang.String[] { "Entries", "HasDefaultValue", "NoMatchError", });
    internal_static_blaze_query_Attribute_SelectorList_descriptor =
      internal_static_blaze_query_Attribute_descriptor.getNestedTypes().get(2);
    internal_static_blaze_query_Attribute_SelectorList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_Attribute_SelectorList_descriptor,
        new java.lang.String[] { "Type", "Elements", });
    internal_static_blaze_query_Rule_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_blaze_query_Rule_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_Rule_descriptor,
        new java.lang.String[] { "Name", "RuleClass", "Location", "Attribute", "RuleInput", "RuleOutput", "DefaultSetting", "DEPRECATEDParseableLocation", "PublicByDefault", "IsSkylark", "SkylarkAttributeAspects", "SkylarkEnvironmentHashCode", });
    internal_static_blaze_query_AttributeAspect_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_blaze_query_AttributeAspect_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_AttributeAspect_descriptor,
        new java.lang.String[] { "AttributeName", "Aspect", });
    internal_static_blaze_query_SkylarkAspect_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_blaze_query_SkylarkAspect_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_SkylarkAspect_descriptor,
        new java.lang.String[] { "ExtensionFileLabel", "ExportedName", "Attribute", });
    internal_static_blaze_query_RuleSummary_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_blaze_query_RuleSummary_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_RuleSummary_descriptor,
        new java.lang.String[] { "Rule", "Dependency", "Location", });
    internal_static_blaze_query_PackageGroup_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_blaze_query_PackageGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_PackageGroup_descriptor,
        new java.lang.String[] { "Name", "ContainedPackage", "IncludedPackageGroup", "DEPRECATEDParseableLocation", });
    internal_static_blaze_query_EnvironmentGroup_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_blaze_query_EnvironmentGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_EnvironmentGroup_descriptor,
        new java.lang.String[] { "Name", "Environment", "Default", });
    internal_static_blaze_query_SourceFile_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_blaze_query_SourceFile_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_SourceFile_descriptor,
        new java.lang.String[] { "Name", "Location", "DEPRECATEDParseableLocation", "Subinclude", "PackageGroup", "VisibilityLabel", "Feature", "License", "PackageContainsErrors", });
    internal_static_blaze_query_GeneratedFile_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_blaze_query_GeneratedFile_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_GeneratedFile_descriptor,
        new java.lang.String[] { "Name", "GeneratingRule", "Location", });
    internal_static_blaze_query_Target_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_blaze_query_Target_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_Target_descriptor,
        new java.lang.String[] { "Type", "Rule", "SourceFile", "GeneratedFile", "PackageGroup", "EnvironmentGroup", });
    internal_static_blaze_query_QueryResult_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_blaze_query_QueryResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_QueryResult_descriptor,
        new java.lang.String[] { "Target", });
    internal_static_blaze_query_AllowedRuleClassInfo_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_blaze_query_AllowedRuleClassInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_AllowedRuleClassInfo_descriptor,
        new java.lang.String[] { "Policy", "AllowedRuleClass", });
    internal_static_blaze_query_AttributeDefinition_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_blaze_query_AttributeDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_AttributeDefinition_descriptor,
        new java.lang.String[] { "Name", "Type", "Mandatory", "AllowedRuleClasses", "Documentation", });
    internal_static_blaze_query_RuleDefinition_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_blaze_query_RuleDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_RuleDefinition_descriptor,
        new java.lang.String[] { "Name", "Attribute", "Documentation", "Label", });
    internal_static_blaze_query_BuildLanguage_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_blaze_query_BuildLanguage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_BuildLanguage_descriptor,
        new java.lang.String[] { "Rule", });
    internal_static_blaze_query_Location_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_blaze_query_Location_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_Location_descriptor,
        new java.lang.String[] { "StartOffset", "StartLine", "StartColumn", "EndOffset", "EndLine", "EndColumn", });
    internal_static_blaze_query_MakeVarBinding_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_blaze_query_MakeVarBinding_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_MakeVarBinding_descriptor,
        new java.lang.String[] { "Value", "PlatformSetRegexp", });
    internal_static_blaze_query_MakeVar_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_blaze_query_MakeVar_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_MakeVar_descriptor,
        new java.lang.String[] { "Name", "Binding", });
    internal_static_blaze_query_GlobCriteria_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_blaze_query_GlobCriteria_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_GlobCriteria_descriptor,
        new java.lang.String[] { "Include", "Exclude", "Glob", });
    internal_static_blaze_query_Event_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_blaze_query_Event_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_blaze_query_Event_descriptor,
        new java.lang.String[] { "Kind", "DEPRECATEDLocation", "Message", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
