// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: src/main/protobuf/analysis.proto

package com.google.devtools.build.lib.analysis;

public final class AnalysisProtos {
  private AnalysisProtos() {}
  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 ActionGraphContainerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.ActionGraphContainer)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact> 
        getArtifactsList();
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact getArtifacts(int index);
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    int getArtifactsCount();
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder> 
        getArtifactsOrBuilderList();
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder getArtifactsOrBuilder(
        int index);

    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Action> 
        getActionsList();
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.Action getActions(int index);
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    int getActionsCount();
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder> 
        getActionsOrBuilderList();
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder getActionsOrBuilder(
        int index);

    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Target> 
        getTargetsList();
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.Target getTargets(int index);
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    int getTargetsCount();
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder> 
        getTargetsOrBuilderList();
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder getTargetsOrBuilder(
        int index);

    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles> 
        getDepSetOfFilesList();
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles getDepSetOfFiles(int index);
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    int getDepSetOfFilesCount();
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder> 
        getDepSetOfFilesOrBuilderList();
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder getDepSetOfFilesOrBuilder(
        int index);

    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration> 
        getConfigurationList();
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getConfiguration(int index);
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    int getConfigurationCount();
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder> 
        getConfigurationOrBuilderList();
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder getConfigurationOrBuilder(
        int index);

    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor> 
        getAspectDescriptorsList();
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor getAspectDescriptors(int index);
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    int getAspectDescriptorsCount();
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder> 
        getAspectDescriptorsOrBuilderList();
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder getAspectDescriptorsOrBuilder(
        int index);

    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass> 
        getRuleClassesList();
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass getRuleClasses(int index);
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    int getRuleClassesCount();
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder> 
        getRuleClassesOrBuilderList();
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder getRuleClassesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Container for the action graph properties.
   * </pre>
   *
   * Protobuf type {@code analysis.ActionGraphContainer}
   */
  public  static final class ActionGraphContainer extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.ActionGraphContainer)
      ActionGraphContainerOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionGraphContainer.newBuilder() to construct.
    private ActionGraphContainer(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionGraphContainer() {
      artifacts_ = java.util.Collections.emptyList();
      actions_ = java.util.Collections.emptyList();
      targets_ = java.util.Collections.emptyList();
      depSetOfFiles_ = java.util.Collections.emptyList();
      configuration_ = java.util.Collections.emptyList();
      aspectDescriptors_ = java.util.Collections.emptyList();
      ruleClasses_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ActionGraphContainer(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                artifacts_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact>();
                mutable_bitField0_ |= 0x00000001;
              }
              artifacts_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.parser(), extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                actions_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.Action>();
                mutable_bitField0_ |= 0x00000002;
              }
              actions_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.Action.parser(), extensionRegistry));
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                targets_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.Target>();
                mutable_bitField0_ |= 0x00000004;
              }
              targets_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.Target.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                depSetOfFiles_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles>();
                mutable_bitField0_ |= 0x00000008;
              }
              depSetOfFiles_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.parser(), extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                configuration_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration>();
                mutable_bitField0_ |= 0x00000010;
              }
              configuration_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.parser(), extensionRegistry));
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                aspectDescriptors_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor>();
                mutable_bitField0_ |= 0x00000020;
              }
              aspectDescriptors_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.parser(), extensionRegistry));
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                ruleClasses_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass>();
                mutable_bitField0_ |= 0x00000040;
              }
              ruleClasses_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          artifacts_ = java.util.Collections.unmodifiableList(artifacts_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          actions_ = java.util.Collections.unmodifiableList(actions_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          targets_ = java.util.Collections.unmodifiableList(targets_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          depSetOfFiles_ = java.util.Collections.unmodifiableList(depSetOfFiles_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          configuration_ = java.util.Collections.unmodifiableList(configuration_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          aspectDescriptors_ = java.util.Collections.unmodifiableList(aspectDescriptors_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          ruleClasses_ = java.util.Collections.unmodifiableList(ruleClasses_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ActionGraphContainer_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ActionGraphContainer_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer.class, com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer.Builder.class);
    }

    public static final int ARTIFACTS_FIELD_NUMBER = 1;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact> artifacts_;
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact> getArtifactsList() {
      return artifacts_;
    }
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder> 
        getArtifactsOrBuilderList() {
      return artifacts_;
    }
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    public int getArtifactsCount() {
      return artifacts_.size();
    }
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact getArtifacts(int index) {
      return artifacts_.get(index);
    }
    /**
     * <code>repeated .analysis.Artifact artifacts = 1;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder getArtifactsOrBuilder(
        int index) {
      return artifacts_.get(index);
    }

    public static final int ACTIONS_FIELD_NUMBER = 2;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Action> actions_;
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Action> getActionsList() {
      return actions_;
    }
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder> 
        getActionsOrBuilderList() {
      return actions_;
    }
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    public int getActionsCount() {
      return actions_.size();
    }
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Action getActions(int index) {
      return actions_.get(index);
    }
    /**
     * <code>repeated .analysis.Action actions = 2;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder getActionsOrBuilder(
        int index) {
      return actions_.get(index);
    }

    public static final int TARGETS_FIELD_NUMBER = 3;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Target> targets_;
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Target> getTargetsList() {
      return targets_;
    }
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder> 
        getTargetsOrBuilderList() {
      return targets_;
    }
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    public int getTargetsCount() {
      return targets_.size();
    }
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Target getTargets(int index) {
      return targets_.get(index);
    }
    /**
     * <code>repeated .analysis.Target targets = 3;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder getTargetsOrBuilder(
        int index) {
      return targets_.get(index);
    }

    public static final int DEP_SET_OF_FILES_FIELD_NUMBER = 4;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles> depSetOfFiles_;
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles> getDepSetOfFilesList() {
      return depSetOfFiles_;
    }
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder> 
        getDepSetOfFilesOrBuilderList() {
      return depSetOfFiles_;
    }
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    public int getDepSetOfFilesCount() {
      return depSetOfFiles_.size();
    }
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles getDepSetOfFiles(int index) {
      return depSetOfFiles_.get(index);
    }
    /**
     * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder getDepSetOfFilesOrBuilder(
        int index) {
      return depSetOfFiles_.get(index);
    }

    public static final int CONFIGURATION_FIELD_NUMBER = 5;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration> configuration_;
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration> getConfigurationList() {
      return configuration_;
    }
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder> 
        getConfigurationOrBuilderList() {
      return configuration_;
    }
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    public int getConfigurationCount() {
      return configuration_.size();
    }
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getConfiguration(int index) {
      return configuration_.get(index);
    }
    /**
     * <code>repeated .analysis.Configuration configuration = 5;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder getConfigurationOrBuilder(
        int index) {
      return configuration_.get(index);
    }

    public static final int ASPECT_DESCRIPTORS_FIELD_NUMBER = 6;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor> aspectDescriptors_;
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor> getAspectDescriptorsList() {
      return aspectDescriptors_;
    }
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder> 
        getAspectDescriptorsOrBuilderList() {
      return aspectDescriptors_;
    }
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    public int getAspectDescriptorsCount() {
      return aspectDescriptors_.size();
    }
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor getAspectDescriptors(int index) {
      return aspectDescriptors_.get(index);
    }
    /**
     * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder getAspectDescriptorsOrBuilder(
        int index) {
      return aspectDescriptors_.get(index);
    }

    public static final int RULE_CLASSES_FIELD_NUMBER = 7;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass> ruleClasses_;
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass> getRuleClassesList() {
      return ruleClasses_;
    }
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder> 
        getRuleClassesOrBuilderList() {
      return ruleClasses_;
    }
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    public int getRuleClassesCount() {
      return ruleClasses_.size();
    }
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass getRuleClasses(int index) {
      return ruleClasses_.get(index);
    }
    /**
     * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder getRuleClassesOrBuilder(
        int index) {
      return ruleClasses_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < artifacts_.size(); i++) {
        output.writeMessage(1, artifacts_.get(i));
      }
      for (int i = 0; i < actions_.size(); i++) {
        output.writeMessage(2, actions_.get(i));
      }
      for (int i = 0; i < targets_.size(); i++) {
        output.writeMessage(3, targets_.get(i));
      }
      for (int i = 0; i < depSetOfFiles_.size(); i++) {
        output.writeMessage(4, depSetOfFiles_.get(i));
      }
      for (int i = 0; i < configuration_.size(); i++) {
        output.writeMessage(5, configuration_.get(i));
      }
      for (int i = 0; i < aspectDescriptors_.size(); i++) {
        output.writeMessage(6, aspectDescriptors_.get(i));
      }
      for (int i = 0; i < ruleClasses_.size(); i++) {
        output.writeMessage(7, ruleClasses_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < artifacts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, artifacts_.get(i));
      }
      for (int i = 0; i < actions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, actions_.get(i));
      }
      for (int i = 0; i < targets_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, targets_.get(i));
      }
      for (int i = 0; i < depSetOfFiles_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, depSetOfFiles_.get(i));
      }
      for (int i = 0; i < configuration_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, configuration_.get(i));
      }
      for (int i = 0; i < aspectDescriptors_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, aspectDescriptors_.get(i));
      }
      for (int i = 0; i < ruleClasses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, ruleClasses_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer other = (com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer) obj;

      boolean result = true;
      result = result && getArtifactsList()
          .equals(other.getArtifactsList());
      result = result && getActionsList()
          .equals(other.getActionsList());
      result = result && getTargetsList()
          .equals(other.getTargetsList());
      result = result && getDepSetOfFilesList()
          .equals(other.getDepSetOfFilesList());
      result = result && getConfigurationList()
          .equals(other.getConfigurationList());
      result = result && getAspectDescriptorsList()
          .equals(other.getAspectDescriptorsList());
      result = result && getRuleClassesList()
          .equals(other.getRuleClassesList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getArtifactsCount() > 0) {
        hash = (37 * hash) + ARTIFACTS_FIELD_NUMBER;
        hash = (53 * hash) + getArtifactsList().hashCode();
      }
      if (getActionsCount() > 0) {
        hash = (37 * hash) + ACTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getActionsList().hashCode();
      }
      if (getTargetsCount() > 0) {
        hash = (37 * hash) + TARGETS_FIELD_NUMBER;
        hash = (53 * hash) + getTargetsList().hashCode();
      }
      if (getDepSetOfFilesCount() > 0) {
        hash = (37 * hash) + DEP_SET_OF_FILES_FIELD_NUMBER;
        hash = (53 * hash) + getDepSetOfFilesList().hashCode();
      }
      if (getConfigurationCount() > 0) {
        hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
        hash = (53 * hash) + getConfigurationList().hashCode();
      }
      if (getAspectDescriptorsCount() > 0) {
        hash = (37 * hash) + ASPECT_DESCRIPTORS_FIELD_NUMBER;
        hash = (53 * hash) + getAspectDescriptorsList().hashCode();
      }
      if (getRuleClassesCount() > 0) {
        hash = (37 * hash) + RULE_CLASSES_FIELD_NUMBER;
        hash = (53 * hash) + getRuleClassesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Container for the action graph properties.
     * </pre>
     *
     * Protobuf type {@code analysis.ActionGraphContainer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.ActionGraphContainer)
        com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ActionGraphContainer_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ActionGraphContainer_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer.class, com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getArtifactsFieldBuilder();
          getActionsFieldBuilder();
          getTargetsFieldBuilder();
          getDepSetOfFilesFieldBuilder();
          getConfigurationFieldBuilder();
          getAspectDescriptorsFieldBuilder();
          getRuleClassesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (artifactsBuilder_ == null) {
          artifacts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          artifactsBuilder_.clear();
        }
        if (actionsBuilder_ == null) {
          actions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          actionsBuilder_.clear();
        }
        if (targetsBuilder_ == null) {
          targets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          targetsBuilder_.clear();
        }
        if (depSetOfFilesBuilder_ == null) {
          depSetOfFiles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          depSetOfFilesBuilder_.clear();
        }
        if (configurationBuilder_ == null) {
          configuration_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          configurationBuilder_.clear();
        }
        if (aspectDescriptorsBuilder_ == null) {
          aspectDescriptors_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          aspectDescriptorsBuilder_.clear();
        }
        if (ruleClassesBuilder_ == null) {
          ruleClasses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          ruleClassesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ActionGraphContainer_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer result = new com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer(this);
        int from_bitField0_ = bitField0_;
        if (artifactsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            artifacts_ = java.util.Collections.unmodifiableList(artifacts_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.artifacts_ = artifacts_;
        } else {
          result.artifacts_ = artifactsBuilder_.build();
        }
        if (actionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            actions_ = java.util.Collections.unmodifiableList(actions_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.actions_ = actions_;
        } else {
          result.actions_ = actionsBuilder_.build();
        }
        if (targetsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            targets_ = java.util.Collections.unmodifiableList(targets_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.targets_ = targets_;
        } else {
          result.targets_ = targetsBuilder_.build();
        }
        if (depSetOfFilesBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            depSetOfFiles_ = java.util.Collections.unmodifiableList(depSetOfFiles_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.depSetOfFiles_ = depSetOfFiles_;
        } else {
          result.depSetOfFiles_ = depSetOfFilesBuilder_.build();
        }
        if (configurationBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            configuration_ = java.util.Collections.unmodifiableList(configuration_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.configuration_ = configuration_;
        } else {
          result.configuration_ = configurationBuilder_.build();
        }
        if (aspectDescriptorsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            aspectDescriptors_ = java.util.Collections.unmodifiableList(aspectDescriptors_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.aspectDescriptors_ = aspectDescriptors_;
        } else {
          result.aspectDescriptors_ = aspectDescriptorsBuilder_.build();
        }
        if (ruleClassesBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            ruleClasses_ = java.util.Collections.unmodifiableList(ruleClasses_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.ruleClasses_ = ruleClasses_;
        } else {
          result.ruleClasses_ = ruleClassesBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer.getDefaultInstance()) return this;
        if (artifactsBuilder_ == null) {
          if (!other.artifacts_.isEmpty()) {
            if (artifacts_.isEmpty()) {
              artifacts_ = other.artifacts_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureArtifactsIsMutable();
              artifacts_.addAll(other.artifacts_);
            }
            onChanged();
          }
        } else {
          if (!other.artifacts_.isEmpty()) {
            if (artifactsBuilder_.isEmpty()) {
              artifactsBuilder_.dispose();
              artifactsBuilder_ = null;
              artifacts_ = other.artifacts_;
              bitField0_ = (bitField0_ & ~0x00000001);
              artifactsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getArtifactsFieldBuilder() : null;
            } else {
              artifactsBuilder_.addAllMessages(other.artifacts_);
            }
          }
        }
        if (actionsBuilder_ == null) {
          if (!other.actions_.isEmpty()) {
            if (actions_.isEmpty()) {
              actions_ = other.actions_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureActionsIsMutable();
              actions_.addAll(other.actions_);
            }
            onChanged();
          }
        } else {
          if (!other.actions_.isEmpty()) {
            if (actionsBuilder_.isEmpty()) {
              actionsBuilder_.dispose();
              actionsBuilder_ = null;
              actions_ = other.actions_;
              bitField0_ = (bitField0_ & ~0x00000002);
              actionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getActionsFieldBuilder() : null;
            } else {
              actionsBuilder_.addAllMessages(other.actions_);
            }
          }
        }
        if (targetsBuilder_ == null) {
          if (!other.targets_.isEmpty()) {
            if (targets_.isEmpty()) {
              targets_ = other.targets_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureTargetsIsMutable();
              targets_.addAll(other.targets_);
            }
            onChanged();
          }
        } else {
          if (!other.targets_.isEmpty()) {
            if (targetsBuilder_.isEmpty()) {
              targetsBuilder_.dispose();
              targetsBuilder_ = null;
              targets_ = other.targets_;
              bitField0_ = (bitField0_ & ~0x00000004);
              targetsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTargetsFieldBuilder() : null;
            } else {
              targetsBuilder_.addAllMessages(other.targets_);
            }
          }
        }
        if (depSetOfFilesBuilder_ == null) {
          if (!other.depSetOfFiles_.isEmpty()) {
            if (depSetOfFiles_.isEmpty()) {
              depSetOfFiles_ = other.depSetOfFiles_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureDepSetOfFilesIsMutable();
              depSetOfFiles_.addAll(other.depSetOfFiles_);
            }
            onChanged();
          }
        } else {
          if (!other.depSetOfFiles_.isEmpty()) {
            if (depSetOfFilesBuilder_.isEmpty()) {
              depSetOfFilesBuilder_.dispose();
              depSetOfFilesBuilder_ = null;
              depSetOfFiles_ = other.depSetOfFiles_;
              bitField0_ = (bitField0_ & ~0x00000008);
              depSetOfFilesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDepSetOfFilesFieldBuilder() : null;
            } else {
              depSetOfFilesBuilder_.addAllMessages(other.depSetOfFiles_);
            }
          }
        }
        if (configurationBuilder_ == null) {
          if (!other.configuration_.isEmpty()) {
            if (configuration_.isEmpty()) {
              configuration_ = other.configuration_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureConfigurationIsMutable();
              configuration_.addAll(other.configuration_);
            }
            onChanged();
          }
        } else {
          if (!other.configuration_.isEmpty()) {
            if (configurationBuilder_.isEmpty()) {
              configurationBuilder_.dispose();
              configurationBuilder_ = null;
              configuration_ = other.configuration_;
              bitField0_ = (bitField0_ & ~0x00000010);
              configurationBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConfigurationFieldBuilder() : null;
            } else {
              configurationBuilder_.addAllMessages(other.configuration_);
            }
          }
        }
        if (aspectDescriptorsBuilder_ == null) {
          if (!other.aspectDescriptors_.isEmpty()) {
            if (aspectDescriptors_.isEmpty()) {
              aspectDescriptors_ = other.aspectDescriptors_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureAspectDescriptorsIsMutable();
              aspectDescriptors_.addAll(other.aspectDescriptors_);
            }
            onChanged();
          }
        } else {
          if (!other.aspectDescriptors_.isEmpty()) {
            if (aspectDescriptorsBuilder_.isEmpty()) {
              aspectDescriptorsBuilder_.dispose();
              aspectDescriptorsBuilder_ = null;
              aspectDescriptors_ = other.aspectDescriptors_;
              bitField0_ = (bitField0_ & ~0x00000020);
              aspectDescriptorsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAspectDescriptorsFieldBuilder() : null;
            } else {
              aspectDescriptorsBuilder_.addAllMessages(other.aspectDescriptors_);
            }
          }
        }
        if (ruleClassesBuilder_ == null) {
          if (!other.ruleClasses_.isEmpty()) {
            if (ruleClasses_.isEmpty()) {
              ruleClasses_ = other.ruleClasses_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureRuleClassesIsMutable();
              ruleClasses_.addAll(other.ruleClasses_);
            }
            onChanged();
          }
        } else {
          if (!other.ruleClasses_.isEmpty()) {
            if (ruleClassesBuilder_.isEmpty()) {
              ruleClassesBuilder_.dispose();
              ruleClassesBuilder_ = null;
              ruleClasses_ = other.ruleClasses_;
              bitField0_ = (bitField0_ & ~0x00000040);
              ruleClassesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRuleClassesFieldBuilder() : null;
            } else {
              ruleClassesBuilder_.addAllMessages(other.ruleClasses_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer) 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.analysis.AnalysisProtos.Artifact> artifacts_ =
        java.util.Collections.emptyList();
      private void ensureArtifactsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          artifacts_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact>(artifacts_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder> artifactsBuilder_;

      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact> getArtifactsList() {
        if (artifactsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(artifacts_);
        } else {
          return artifactsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public int getArtifactsCount() {
        if (artifactsBuilder_ == null) {
          return artifacts_.size();
        } else {
          return artifactsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact getArtifacts(int index) {
        if (artifactsBuilder_ == null) {
          return artifacts_.get(index);
        } else {
          return artifactsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder setArtifacts(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact value) {
        if (artifactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArtifactsIsMutable();
          artifacts_.set(index, value);
          onChanged();
        } else {
          artifactsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder setArtifacts(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder builderForValue) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          artifacts_.set(index, builderForValue.build());
          onChanged();
        } else {
          artifactsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder addArtifacts(com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact value) {
        if (artifactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArtifactsIsMutable();
          artifacts_.add(value);
          onChanged();
        } else {
          artifactsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder addArtifacts(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact value) {
        if (artifactsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArtifactsIsMutable();
          artifacts_.add(index, value);
          onChanged();
        } else {
          artifactsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder addArtifacts(
          com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder builderForValue) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          artifacts_.add(builderForValue.build());
          onChanged();
        } else {
          artifactsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder addArtifacts(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder builderForValue) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          artifacts_.add(index, builderForValue.build());
          onChanged();
        } else {
          artifactsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder addAllArtifacts(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact> values) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, artifacts_);
          onChanged();
        } else {
          artifactsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder clearArtifacts() {
        if (artifactsBuilder_ == null) {
          artifacts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          artifactsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public Builder removeArtifacts(int index) {
        if (artifactsBuilder_ == null) {
          ensureArtifactsIsMutable();
          artifacts_.remove(index);
          onChanged();
        } else {
          artifactsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder getArtifactsBuilder(
          int index) {
        return getArtifactsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder getArtifactsOrBuilder(
          int index) {
        if (artifactsBuilder_ == null) {
          return artifacts_.get(index);  } else {
          return artifactsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder> 
           getArtifactsOrBuilderList() {
        if (artifactsBuilder_ != null) {
          return artifactsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(artifacts_);
        }
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder addArtifactsBuilder() {
        return getArtifactsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder addArtifactsBuilder(
          int index) {
        return getArtifactsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.Artifact artifacts = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder> 
           getArtifactsBuilderList() {
        return getArtifactsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder> 
          getArtifactsFieldBuilder() {
        if (artifactsBuilder_ == null) {
          artifactsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder>(
                  artifacts_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          artifacts_ = null;
        }
        return artifactsBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Action> actions_ =
        java.util.Collections.emptyList();
      private void ensureActionsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          actions_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.Action>(actions_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Action, com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder> actionsBuilder_;

      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Action> getActionsList() {
        if (actionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(actions_);
        } else {
          return actionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public int getActionsCount() {
        if (actionsBuilder_ == null) {
          return actions_.size();
        } else {
          return actionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Action getActions(int index) {
        if (actionsBuilder_ == null) {
          return actions_.get(index);
        } else {
          return actionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder setActions(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Action value) {
        if (actionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActionsIsMutable();
          actions_.set(index, value);
          onChanged();
        } else {
          actionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder setActions(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder builderForValue) {
        if (actionsBuilder_ == null) {
          ensureActionsIsMutable();
          actions_.set(index, builderForValue.build());
          onChanged();
        } else {
          actionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder addActions(com.google.devtools.build.lib.analysis.AnalysisProtos.Action value) {
        if (actionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActionsIsMutable();
          actions_.add(value);
          onChanged();
        } else {
          actionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder addActions(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Action value) {
        if (actionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActionsIsMutable();
          actions_.add(index, value);
          onChanged();
        } else {
          actionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder addActions(
          com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder builderForValue) {
        if (actionsBuilder_ == null) {
          ensureActionsIsMutable();
          actions_.add(builderForValue.build());
          onChanged();
        } else {
          actionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder addActions(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder builderForValue) {
        if (actionsBuilder_ == null) {
          ensureActionsIsMutable();
          actions_.add(index, builderForValue.build());
          onChanged();
        } else {
          actionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder addAllActions(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.Action> values) {
        if (actionsBuilder_ == null) {
          ensureActionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, actions_);
          onChanged();
        } else {
          actionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder clearActions() {
        if (actionsBuilder_ == null) {
          actions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          actionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public Builder removeActions(int index) {
        if (actionsBuilder_ == null) {
          ensureActionsIsMutable();
          actions_.remove(index);
          onChanged();
        } else {
          actionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder getActionsBuilder(
          int index) {
        return getActionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder getActionsOrBuilder(
          int index) {
        if (actionsBuilder_ == null) {
          return actions_.get(index);  } else {
          return actionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder> 
           getActionsOrBuilderList() {
        if (actionsBuilder_ != null) {
          return actionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(actions_);
        }
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder addActionsBuilder() {
        return getActionsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.Action.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder addActionsBuilder(
          int index) {
        return getActionsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.Action.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.Action actions = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder> 
           getActionsBuilderList() {
        return getActionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Action, com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder> 
          getActionsFieldBuilder() {
        if (actionsBuilder_ == null) {
          actionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.Action, com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder>(
                  actions_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          actions_ = null;
        }
        return actionsBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Target> targets_ =
        java.util.Collections.emptyList();
      private void ensureTargetsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          targets_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.Target>(targets_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Target, com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder> targetsBuilder_;

      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Target> getTargetsList() {
        if (targetsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(targets_);
        } else {
          return targetsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public int getTargetsCount() {
        if (targetsBuilder_ == null) {
          return targets_.size();
        } else {
          return targetsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Target getTargets(int index) {
        if (targetsBuilder_ == null) {
          return targets_.get(index);
        } else {
          return targetsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder setTargets(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Target value) {
        if (targetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTargetsIsMutable();
          targets_.set(index, value);
          onChanged();
        } else {
          targetsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder setTargets(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder builderForValue) {
        if (targetsBuilder_ == null) {
          ensureTargetsIsMutable();
          targets_.set(index, builderForValue.build());
          onChanged();
        } else {
          targetsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder addTargets(com.google.devtools.build.lib.analysis.AnalysisProtos.Target value) {
        if (targetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTargetsIsMutable();
          targets_.add(value);
          onChanged();
        } else {
          targetsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder addTargets(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Target value) {
        if (targetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTargetsIsMutable();
          targets_.add(index, value);
          onChanged();
        } else {
          targetsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder addTargets(
          com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder builderForValue) {
        if (targetsBuilder_ == null) {
          ensureTargetsIsMutable();
          targets_.add(builderForValue.build());
          onChanged();
        } else {
          targetsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder addTargets(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder builderForValue) {
        if (targetsBuilder_ == null) {
          ensureTargetsIsMutable();
          targets_.add(index, builderForValue.build());
          onChanged();
        } else {
          targetsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder addAllTargets(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.Target> values) {
        if (targetsBuilder_ == null) {
          ensureTargetsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, targets_);
          onChanged();
        } else {
          targetsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder clearTargets() {
        if (targetsBuilder_ == null) {
          targets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          targetsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public Builder removeTargets(int index) {
        if (targetsBuilder_ == null) {
          ensureTargetsIsMutable();
          targets_.remove(index);
          onChanged();
        } else {
          targetsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder getTargetsBuilder(
          int index) {
        return getTargetsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder getTargetsOrBuilder(
          int index) {
        if (targetsBuilder_ == null) {
          return targets_.get(index);  } else {
          return targetsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder> 
           getTargetsOrBuilderList() {
        if (targetsBuilder_ != null) {
          return targetsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(targets_);
        }
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder addTargetsBuilder() {
        return getTargetsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.Target.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder addTargetsBuilder(
          int index) {
        return getTargetsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.Target.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.Target targets = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder> 
           getTargetsBuilderList() {
        return getTargetsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Target, com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder> 
          getTargetsFieldBuilder() {
        if (targetsBuilder_ == null) {
          targetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.Target, com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder>(
                  targets_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          targets_ = null;
        }
        return targetsBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles> depSetOfFiles_ =
        java.util.Collections.emptyList();
      private void ensureDepSetOfFilesIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          depSetOfFiles_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles>(depSetOfFiles_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder> depSetOfFilesBuilder_;

      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles> getDepSetOfFilesList() {
        if (depSetOfFilesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(depSetOfFiles_);
        } else {
          return depSetOfFilesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public int getDepSetOfFilesCount() {
        if (depSetOfFilesBuilder_ == null) {
          return depSetOfFiles_.size();
        } else {
          return depSetOfFilesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles getDepSetOfFiles(int index) {
        if (depSetOfFilesBuilder_ == null) {
          return depSetOfFiles_.get(index);
        } else {
          return depSetOfFilesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder setDepSetOfFiles(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles value) {
        if (depSetOfFilesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDepSetOfFilesIsMutable();
          depSetOfFiles_.set(index, value);
          onChanged();
        } else {
          depSetOfFilesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder setDepSetOfFiles(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder builderForValue) {
        if (depSetOfFilesBuilder_ == null) {
          ensureDepSetOfFilesIsMutable();
          depSetOfFiles_.set(index, builderForValue.build());
          onChanged();
        } else {
          depSetOfFilesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder addDepSetOfFiles(com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles value) {
        if (depSetOfFilesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDepSetOfFilesIsMutable();
          depSetOfFiles_.add(value);
          onChanged();
        } else {
          depSetOfFilesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder addDepSetOfFiles(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles value) {
        if (depSetOfFilesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDepSetOfFilesIsMutable();
          depSetOfFiles_.add(index, value);
          onChanged();
        } else {
          depSetOfFilesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder addDepSetOfFiles(
          com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder builderForValue) {
        if (depSetOfFilesBuilder_ == null) {
          ensureDepSetOfFilesIsMutable();
          depSetOfFiles_.add(builderForValue.build());
          onChanged();
        } else {
          depSetOfFilesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder addDepSetOfFiles(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder builderForValue) {
        if (depSetOfFilesBuilder_ == null) {
          ensureDepSetOfFilesIsMutable();
          depSetOfFiles_.add(index, builderForValue.build());
          onChanged();
        } else {
          depSetOfFilesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder addAllDepSetOfFiles(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles> values) {
        if (depSetOfFilesBuilder_ == null) {
          ensureDepSetOfFilesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, depSetOfFiles_);
          onChanged();
        } else {
          depSetOfFilesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder clearDepSetOfFiles() {
        if (depSetOfFilesBuilder_ == null) {
          depSetOfFiles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          depSetOfFilesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public Builder removeDepSetOfFiles(int index) {
        if (depSetOfFilesBuilder_ == null) {
          ensureDepSetOfFilesIsMutable();
          depSetOfFiles_.remove(index);
          onChanged();
        } else {
          depSetOfFilesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder getDepSetOfFilesBuilder(
          int index) {
        return getDepSetOfFilesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder getDepSetOfFilesOrBuilder(
          int index) {
        if (depSetOfFilesBuilder_ == null) {
          return depSetOfFiles_.get(index);  } else {
          return depSetOfFilesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder> 
           getDepSetOfFilesOrBuilderList() {
        if (depSetOfFilesBuilder_ != null) {
          return depSetOfFilesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(depSetOfFiles_);
        }
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder addDepSetOfFilesBuilder() {
        return getDepSetOfFilesFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder addDepSetOfFilesBuilder(
          int index) {
        return getDepSetOfFilesFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.DepSetOfFiles dep_set_of_files = 4;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder> 
           getDepSetOfFilesBuilderList() {
        return getDepSetOfFilesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder> 
          getDepSetOfFilesFieldBuilder() {
        if (depSetOfFilesBuilder_ == null) {
          depSetOfFilesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder>(
                  depSetOfFiles_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          depSetOfFiles_ = null;
        }
        return depSetOfFilesBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration> configuration_ =
        java.util.Collections.emptyList();
      private void ensureConfigurationIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          configuration_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration>(configuration_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder> configurationBuilder_;

      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration> getConfigurationList() {
        if (configurationBuilder_ == null) {
          return java.util.Collections.unmodifiableList(configuration_);
        } else {
          return configurationBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public int getConfigurationCount() {
        if (configurationBuilder_ == null) {
          return configuration_.size();
        } else {
          return configurationBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getConfiguration(int index) {
        if (configurationBuilder_ == null) {
          return configuration_.get(index);
        } else {
          return configurationBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder setConfiguration(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigurationIsMutable();
          configuration_.set(index, value);
          onChanged();
        } else {
          configurationBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder setConfiguration(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          ensureConfigurationIsMutable();
          configuration_.set(index, builderForValue.build());
          onChanged();
        } else {
          configurationBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder addConfiguration(com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigurationIsMutable();
          configuration_.add(value);
          onChanged();
        } else {
          configurationBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder addConfiguration(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConfigurationIsMutable();
          configuration_.add(index, value);
          onChanged();
        } else {
          configurationBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder addConfiguration(
          com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          ensureConfigurationIsMutable();
          configuration_.add(builderForValue.build());
          onChanged();
        } else {
          configurationBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder addConfiguration(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          ensureConfigurationIsMutable();
          configuration_.add(index, builderForValue.build());
          onChanged();
        } else {
          configurationBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder addAllConfiguration(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration> values) {
        if (configurationBuilder_ == null) {
          ensureConfigurationIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, configuration_);
          onChanged();
        } else {
          configurationBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder clearConfiguration() {
        if (configurationBuilder_ == null) {
          configuration_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          configurationBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public Builder removeConfiguration(int index) {
        if (configurationBuilder_ == null) {
          ensureConfigurationIsMutable();
          configuration_.remove(index);
          onChanged();
        } else {
          configurationBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder getConfigurationBuilder(
          int index) {
        return getConfigurationFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder getConfigurationOrBuilder(
          int index) {
        if (configurationBuilder_ == null) {
          return configuration_.get(index);  } else {
          return configurationBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder> 
           getConfigurationOrBuilderList() {
        if (configurationBuilder_ != null) {
          return configurationBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(configuration_);
        }
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder addConfigurationBuilder() {
        return getConfigurationFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder addConfigurationBuilder(
          int index) {
        return getConfigurationFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.Configuration configuration = 5;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder> 
           getConfigurationBuilderList() {
        return getConfigurationFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder> 
          getConfigurationFieldBuilder() {
        if (configurationBuilder_ == null) {
          configurationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder>(
                  configuration_,
                  ((bitField0_ & 0x00000010) == 0x00000010),
                  getParentForChildren(),
                  isClean());
          configuration_ = null;
        }
        return configurationBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor> aspectDescriptors_ =
        java.util.Collections.emptyList();
      private void ensureAspectDescriptorsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          aspectDescriptors_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor>(aspectDescriptors_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder> aspectDescriptorsBuilder_;

      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor> getAspectDescriptorsList() {
        if (aspectDescriptorsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(aspectDescriptors_);
        } else {
          return aspectDescriptorsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public int getAspectDescriptorsCount() {
        if (aspectDescriptorsBuilder_ == null) {
          return aspectDescriptors_.size();
        } else {
          return aspectDescriptorsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor getAspectDescriptors(int index) {
        if (aspectDescriptorsBuilder_ == null) {
          return aspectDescriptors_.get(index);
        } else {
          return aspectDescriptorsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder setAspectDescriptors(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor value) {
        if (aspectDescriptorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAspectDescriptorsIsMutable();
          aspectDescriptors_.set(index, value);
          onChanged();
        } else {
          aspectDescriptorsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder setAspectDescriptors(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder builderForValue) {
        if (aspectDescriptorsBuilder_ == null) {
          ensureAspectDescriptorsIsMutable();
          aspectDescriptors_.set(index, builderForValue.build());
          onChanged();
        } else {
          aspectDescriptorsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder addAspectDescriptors(com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor value) {
        if (aspectDescriptorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAspectDescriptorsIsMutable();
          aspectDescriptors_.add(value);
          onChanged();
        } else {
          aspectDescriptorsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder addAspectDescriptors(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor value) {
        if (aspectDescriptorsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAspectDescriptorsIsMutable();
          aspectDescriptors_.add(index, value);
          onChanged();
        } else {
          aspectDescriptorsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder addAspectDescriptors(
          com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder builderForValue) {
        if (aspectDescriptorsBuilder_ == null) {
          ensureAspectDescriptorsIsMutable();
          aspectDescriptors_.add(builderForValue.build());
          onChanged();
        } else {
          aspectDescriptorsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder addAspectDescriptors(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder builderForValue) {
        if (aspectDescriptorsBuilder_ == null) {
          ensureAspectDescriptorsIsMutable();
          aspectDescriptors_.add(index, builderForValue.build());
          onChanged();
        } else {
          aspectDescriptorsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder addAllAspectDescriptors(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor> values) {
        if (aspectDescriptorsBuilder_ == null) {
          ensureAspectDescriptorsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, aspectDescriptors_);
          onChanged();
        } else {
          aspectDescriptorsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder clearAspectDescriptors() {
        if (aspectDescriptorsBuilder_ == null) {
          aspectDescriptors_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          aspectDescriptorsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public Builder removeAspectDescriptors(int index) {
        if (aspectDescriptorsBuilder_ == null) {
          ensureAspectDescriptorsIsMutable();
          aspectDescriptors_.remove(index);
          onChanged();
        } else {
          aspectDescriptorsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder getAspectDescriptorsBuilder(
          int index) {
        return getAspectDescriptorsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder getAspectDescriptorsOrBuilder(
          int index) {
        if (aspectDescriptorsBuilder_ == null) {
          return aspectDescriptors_.get(index);  } else {
          return aspectDescriptorsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder> 
           getAspectDescriptorsOrBuilderList() {
        if (aspectDescriptorsBuilder_ != null) {
          return aspectDescriptorsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(aspectDescriptors_);
        }
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder addAspectDescriptorsBuilder() {
        return getAspectDescriptorsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder addAspectDescriptorsBuilder(
          int index) {
        return getAspectDescriptorsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.AspectDescriptor aspect_descriptors = 6;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder> 
           getAspectDescriptorsBuilderList() {
        return getAspectDescriptorsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder> 
          getAspectDescriptorsFieldBuilder() {
        if (aspectDescriptorsBuilder_ == null) {
          aspectDescriptorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder>(
                  aspectDescriptors_,
                  ((bitField0_ & 0x00000020) == 0x00000020),
                  getParentForChildren(),
                  isClean());
          aspectDescriptors_ = null;
        }
        return aspectDescriptorsBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass> ruleClasses_ =
        java.util.Collections.emptyList();
      private void ensureRuleClassesIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          ruleClasses_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass>(ruleClasses_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder> ruleClassesBuilder_;

      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass> getRuleClassesList() {
        if (ruleClassesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(ruleClasses_);
        } else {
          return ruleClassesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public int getRuleClassesCount() {
        if (ruleClassesBuilder_ == null) {
          return ruleClasses_.size();
        } else {
          return ruleClassesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass getRuleClasses(int index) {
        if (ruleClassesBuilder_ == null) {
          return ruleClasses_.get(index);
        } else {
          return ruleClassesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder setRuleClasses(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass value) {
        if (ruleClassesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuleClassesIsMutable();
          ruleClasses_.set(index, value);
          onChanged();
        } else {
          ruleClassesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder setRuleClasses(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder builderForValue) {
        if (ruleClassesBuilder_ == null) {
          ensureRuleClassesIsMutable();
          ruleClasses_.set(index, builderForValue.build());
          onChanged();
        } else {
          ruleClassesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder addRuleClasses(com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass value) {
        if (ruleClassesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuleClassesIsMutable();
          ruleClasses_.add(value);
          onChanged();
        } else {
          ruleClassesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder addRuleClasses(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass value) {
        if (ruleClassesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRuleClassesIsMutable();
          ruleClasses_.add(index, value);
          onChanged();
        } else {
          ruleClassesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder addRuleClasses(
          com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder builderForValue) {
        if (ruleClassesBuilder_ == null) {
          ensureRuleClassesIsMutable();
          ruleClasses_.add(builderForValue.build());
          onChanged();
        } else {
          ruleClassesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder addRuleClasses(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder builderForValue) {
        if (ruleClassesBuilder_ == null) {
          ensureRuleClassesIsMutable();
          ruleClasses_.add(index, builderForValue.build());
          onChanged();
        } else {
          ruleClassesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder addAllRuleClasses(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass> values) {
        if (ruleClassesBuilder_ == null) {
          ensureRuleClassesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ruleClasses_);
          onChanged();
        } else {
          ruleClassesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder clearRuleClasses() {
        if (ruleClassesBuilder_ == null) {
          ruleClasses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          ruleClassesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public Builder removeRuleClasses(int index) {
        if (ruleClassesBuilder_ == null) {
          ensureRuleClassesIsMutable();
          ruleClasses_.remove(index);
          onChanged();
        } else {
          ruleClassesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder getRuleClassesBuilder(
          int index) {
        return getRuleClassesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder getRuleClassesOrBuilder(
          int index) {
        if (ruleClassesBuilder_ == null) {
          return ruleClasses_.get(index);  } else {
          return ruleClassesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder> 
           getRuleClassesOrBuilderList() {
        if (ruleClassesBuilder_ != null) {
          return ruleClassesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(ruleClasses_);
        }
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder addRuleClassesBuilder() {
        return getRuleClassesFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder addRuleClassesBuilder(
          int index) {
        return getRuleClassesFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.getDefaultInstance());
      }
      /**
       * <code>repeated .analysis.RuleClass rule_classes = 7;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder> 
           getRuleClassesBuilderList() {
        return getRuleClassesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder> 
          getRuleClassesFieldBuilder() {
        if (ruleClassesBuilder_ == null) {
          ruleClassesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder>(
                  ruleClasses_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          ruleClasses_ = null;
        }
        return ruleClassesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.ActionGraphContainer)
    }

    // @@protoc_insertion_point(class_scope:analysis.ActionGraphContainer)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ArtifactOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.Artifact)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Identifier for this artifact; this is an opaque string, only valid for this
     * particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    java.lang.String getId();
    /**
     * <pre>
     * Identifier for this artifact; this is an opaque string, only valid for this
     * particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * The relative path of the file within the execution root.
     * </pre>
     *
     * <code>string exec_path = 2;</code>
     */
    java.lang.String getExecPath();
    /**
     * <pre>
     * The relative path of the file within the execution root.
     * </pre>
     *
     * <code>string exec_path = 2;</code>
     */
    com.google.protobuf.ByteString
        getExecPathBytes();

    /**
     * <pre>
     * True iff the artifact is a tree artifact, i.e. the above exec_path refers
     * a directory.
     * </pre>
     *
     * <code>bool is_tree_artifact = 3;</code>
     */
    boolean getIsTreeArtifact();
  }
  /**
   * <pre>
   * Represents a single artifact, whether it's a source file or a derived output
   * file.
   * </pre>
   *
   * Protobuf type {@code analysis.Artifact}
   */
  public  static final class Artifact extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.Artifact)
      ArtifactOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Artifact.newBuilder() to construct.
    private Artifact(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Artifact() {
      id_ = "";
      execPath_ = "";
      isTreeArtifact_ = false;
    }

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

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              execPath_ = s;
              break;
            }
            case 24: {

              isTreeArtifact_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Artifact_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Artifact_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.class, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * Identifier for this artifact; this is an opaque string, only valid for this
     * particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Identifier for this artifact; this is an opaque string, only valid for this
     * particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXEC_PATH_FIELD_NUMBER = 2;
    private volatile java.lang.Object execPath_;
    /**
     * <pre>
     * The relative path of the file within the execution root.
     * </pre>
     *
     * <code>string exec_path = 2;</code>
     */
    public java.lang.String getExecPath() {
      java.lang.Object ref = execPath_;
      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();
        execPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The relative path of the file within the execution root.
     * </pre>
     *
     * <code>string exec_path = 2;</code>
     */
    public com.google.protobuf.ByteString
        getExecPathBytes() {
      java.lang.Object ref = execPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        execPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IS_TREE_ARTIFACT_FIELD_NUMBER = 3;
    private boolean isTreeArtifact_;
    /**
     * <pre>
     * True iff the artifact is a tree artifact, i.e. the above exec_path refers
     * a directory.
     * </pre>
     *
     * <code>bool is_tree_artifact = 3;</code>
     */
    public boolean getIsTreeArtifact() {
      return isTreeArtifact_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getExecPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, execPath_);
      }
      if (isTreeArtifact_ != false) {
        output.writeBool(3, isTreeArtifact_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getExecPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, execPath_);
      }
      if (isTreeArtifact_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isTreeArtifact_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact other = (com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact) obj;

      boolean result = true;
      result = result && getId()
          .equals(other.getId());
      result = result && getExecPath()
          .equals(other.getExecPath());
      result = result && (getIsTreeArtifact()
          == other.getIsTreeArtifact());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + EXEC_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getExecPath().hashCode();
      hash = (37 * hash) + IS_TREE_ARTIFACT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsTreeArtifact());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Represents a single artifact, whether it's a source file or a derived output
     * file.
     * </pre>
     *
     * Protobuf type {@code analysis.Artifact}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.Artifact)
        com.google.devtools.build.lib.analysis.AnalysisProtos.ArtifactOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Artifact_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Artifact_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.class, com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        execPath_ = "";

        isTreeArtifact_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Artifact_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact result = new com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact(this);
        result.id_ = id_;
        result.execPath_ = execPath_;
        result.isTreeArtifact_ = isTreeArtifact_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getExecPath().isEmpty()) {
          execPath_ = other.execPath_;
          onChanged();
        }
        if (other.getIsTreeArtifact() != false) {
          setIsTreeArtifact(other.getIsTreeArtifact());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Identifier for this artifact; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this artifact; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this artifact; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this artifact; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this artifact; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object execPath_ = "";
      /**
       * <pre>
       * The relative path of the file within the execution root.
       * </pre>
       *
       * <code>string exec_path = 2;</code>
       */
      public java.lang.String getExecPath() {
        java.lang.Object ref = execPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          execPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The relative path of the file within the execution root.
       * </pre>
       *
       * <code>string exec_path = 2;</code>
       */
      public com.google.protobuf.ByteString
          getExecPathBytes() {
        java.lang.Object ref = execPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          execPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The relative path of the file within the execution root.
       * </pre>
       *
       * <code>string exec_path = 2;</code>
       */
      public Builder setExecPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        execPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The relative path of the file within the execution root.
       * </pre>
       *
       * <code>string exec_path = 2;</code>
       */
      public Builder clearExecPath() {
        
        execPath_ = getDefaultInstance().getExecPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The relative path of the file within the execution root.
       * </pre>
       *
       * <code>string exec_path = 2;</code>
       */
      public Builder setExecPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        execPath_ = value;
        onChanged();
        return this;
      }

      private boolean isTreeArtifact_ ;
      /**
       * <pre>
       * True iff the artifact is a tree artifact, i.e. the above exec_path refers
       * a directory.
       * </pre>
       *
       * <code>bool is_tree_artifact = 3;</code>
       */
      public boolean getIsTreeArtifact() {
        return isTreeArtifact_;
      }
      /**
       * <pre>
       * True iff the artifact is a tree artifact, i.e. the above exec_path refers
       * a directory.
       * </pre>
       *
       * <code>bool is_tree_artifact = 3;</code>
       */
      public Builder setIsTreeArtifact(boolean value) {
        
        isTreeArtifact_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * True iff the artifact is a tree artifact, i.e. the above exec_path refers
       * a directory.
       * </pre>
       *
       * <code>bool is_tree_artifact = 3;</code>
       */
      public Builder clearIsTreeArtifact() {
        
        isTreeArtifact_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.Artifact)
    }

    // @@protoc_insertion_point(class_scope:analysis.Artifact)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Artifact getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.Action)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The target that was responsible for the creation of the action.
     * </pre>
     *
     * <code>string target_id = 1;</code>
     */
    java.lang.String getTargetId();
    /**
     * <pre>
     * The target that was responsible for the creation of the action.
     * </pre>
     *
     * <code>string target_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getTargetIdBytes();

    /**
     * <pre>
     * The aspects that were responsible for the creation of the action (if any).
     * </pre>
     *
     * <code>repeated string aspect_descriptor_ids = 2;</code>
     */
    java.util.List<java.lang.String>
        getAspectDescriptorIdsList();
    /**
     * <pre>
     * The aspects that were responsible for the creation of the action (if any).
     * </pre>
     *
     * <code>repeated string aspect_descriptor_ids = 2;</code>
     */
    int getAspectDescriptorIdsCount();
    /**
     * <pre>
     * The aspects that were responsible for the creation of the action (if any).
     * </pre>
     *
     * <code>repeated string aspect_descriptor_ids = 2;</code>
     */
    java.lang.String getAspectDescriptorIds(int index);
    /**
     * <pre>
     * The aspects that were responsible for the creation of the action (if any).
     * </pre>
     *
     * <code>repeated string aspect_descriptor_ids = 2;</code>
     */
    com.google.protobuf.ByteString
        getAspectDescriptorIdsBytes(int index);

    /**
     * <pre>
     * Encodes all significant behavior that might affect the output. The key
     * must change if the work performed by the execution of this action changes.
     * Note that the key doesn't include checksums of the input files.
     * </pre>
     *
     * <code>string action_key = 3;</code>
     */
    java.lang.String getActionKey();
    /**
     * <pre>
     * Encodes all significant behavior that might affect the output. The key
     * must change if the work performed by the execution of this action changes.
     * Note that the key doesn't include checksums of the input files.
     * </pre>
     *
     * <code>string action_key = 3;</code>
     */
    com.google.protobuf.ByteString
        getActionKeyBytes();

    /**
     * <pre>
     * The mnemonic for this kind of action.
     * </pre>
     *
     * <code>string mnemonic = 4;</code>
     */
    java.lang.String getMnemonic();
    /**
     * <pre>
     * The mnemonic for this kind of action.
     * </pre>
     *
     * <code>string mnemonic = 4;</code>
     */
    com.google.protobuf.ByteString
        getMnemonicBytes();

    /**
     * <pre>
     * The configuration under which this action is executed.
     * </pre>
     *
     * <code>string configuration_id = 5;</code>
     */
    java.lang.String getConfigurationId();
    /**
     * <pre>
     * The configuration under which this action is executed.
     * </pre>
     *
     * <code>string configuration_id = 5;</code>
     */
    com.google.protobuf.ByteString
        getConfigurationIdBytes();

    /**
     * <pre>
     * The command line arguments of the action. This will be only set if
     * explicitly requested.
     * </pre>
     *
     * <code>repeated string arguments = 6;</code>
     */
    java.util.List<java.lang.String>
        getArgumentsList();
    /**
     * <pre>
     * The command line arguments of the action. This will be only set if
     * explicitly requested.
     * </pre>
     *
     * <code>repeated string arguments = 6;</code>
     */
    int getArgumentsCount();
    /**
     * <pre>
     * The command line arguments of the action. This will be only set if
     * explicitly requested.
     * </pre>
     *
     * <code>repeated string arguments = 6;</code>
     */
    java.lang.String getArguments(int index);
    /**
     * <pre>
     * The command line arguments of the action. This will be only set if
     * explicitly requested.
     * </pre>
     *
     * <code>repeated string arguments = 6;</code>
     */
    com.google.protobuf.ByteString
        getArgumentsBytes(int index);

    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> 
        getEnvironmentVariablesList();
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getEnvironmentVariables(int index);
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    int getEnvironmentVariablesCount();
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
        getEnvironmentVariablesOrBuilderList();
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getEnvironmentVariablesOrBuilder(
        int index);

    /**
     * <pre>
     * The set of input dep sets that the action depends upon. If the action does
     * input discovery, the contents of this set might change during execution.
     * </pre>
     *
     * <code>repeated string input_dep_set_ids = 8;</code>
     */
    java.util.List<java.lang.String>
        getInputDepSetIdsList();
    /**
     * <pre>
     * The set of input dep sets that the action depends upon. If the action does
     * input discovery, the contents of this set might change during execution.
     * </pre>
     *
     * <code>repeated string input_dep_set_ids = 8;</code>
     */
    int getInputDepSetIdsCount();
    /**
     * <pre>
     * The set of input dep sets that the action depends upon. If the action does
     * input discovery, the contents of this set might change during execution.
     * </pre>
     *
     * <code>repeated string input_dep_set_ids = 8;</code>
     */
    java.lang.String getInputDepSetIds(int index);
    /**
     * <pre>
     * The set of input dep sets that the action depends upon. If the action does
     * input discovery, the contents of this set might change during execution.
     * </pre>
     *
     * <code>repeated string input_dep_set_ids = 8;</code>
     */
    com.google.protobuf.ByteString
        getInputDepSetIdsBytes(int index);

    /**
     * <pre>
     * The list of Artifact IDs that represent the output files that this action
     * will generate.
     * </pre>
     *
     * <code>repeated string output_ids = 9;</code>
     */
    java.util.List<java.lang.String>
        getOutputIdsList();
    /**
     * <pre>
     * The list of Artifact IDs that represent the output files that this action
     * will generate.
     * </pre>
     *
     * <code>repeated string output_ids = 9;</code>
     */
    int getOutputIdsCount();
    /**
     * <pre>
     * The list of Artifact IDs that represent the output files that this action
     * will generate.
     * </pre>
     *
     * <code>repeated string output_ids = 9;</code>
     */
    java.lang.String getOutputIds(int index);
    /**
     * <pre>
     * The list of Artifact IDs that represent the output files that this action
     * will generate.
     * </pre>
     *
     * <code>repeated string output_ids = 9;</code>
     */
    com.google.protobuf.ByteString
        getOutputIdsBytes(int index);

    /**
     * <pre>
     * True iff the action does input discovery during execution.
     * </pre>
     *
     * <code>bool discovers_inputs = 10;</code>
     */
    boolean getDiscoversInputs();

    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> 
        getExecutionInfoList();
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getExecutionInfo(int index);
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    int getExecutionInfoCount();
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
        getExecutionInfoOrBuilderList();
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getExecutionInfoOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Represents a single action, which is a function from Artifact(s) to
   * Artifact(s).
   * </pre>
   *
   * Protobuf type {@code analysis.Action}
   */
  public  static final class Action extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.Action)
      ActionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Action.newBuilder() to construct.
    private Action(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Action() {
      targetId_ = "";
      aspectDescriptorIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      actionKey_ = "";
      mnemonic_ = "";
      configurationId_ = "";
      arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      environmentVariables_ = java.util.Collections.emptyList();
      inputDepSetIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      outputIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      discoversInputs_ = false;
      executionInfo_ = java.util.Collections.emptyList();
    }

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

              targetId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                aspectDescriptorIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              aspectDescriptorIds_.add(s);
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              actionKey_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              mnemonic_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              configurationId_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                arguments_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              arguments_.add(s);
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                environmentVariables_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair>();
                mutable_bitField0_ |= 0x00000040;
              }
              environmentVariables_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.parser(), extensionRegistry));
              break;
            }
            case 66: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                inputDepSetIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000080;
              }
              inputDepSetIds_.add(s);
              break;
            }
            case 74: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                outputIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000100;
              }
              outputIds_.add(s);
              break;
            }
            case 80: {

              discoversInputs_ = input.readBool();
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                executionInfo_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair>();
                mutable_bitField0_ |= 0x00000400;
              }
              executionInfo_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          aspectDescriptorIds_ = aspectDescriptorIds_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          arguments_ = arguments_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          environmentVariables_ = java.util.Collections.unmodifiableList(environmentVariables_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          inputDepSetIds_ = inputDepSetIds_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          outputIds_ = outputIds_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          executionInfo_ = java.util.Collections.unmodifiableList(executionInfo_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Action_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Action_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.Action.class, com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder.class);
    }

    private int bitField0_;
    public static final int TARGET_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object targetId_;
    /**
     * <pre>
     * The target that was responsible for the creation of the action.
     * </pre>
     *
     * <code>string target_id = 1;</code>
     */
    public java.lang.String getTargetId() {
      java.lang.Object ref = targetId_;
      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();
        targetId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The target that was responsible for the creation of the action.
     * </pre>
     *
     * <code>string target_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTargetIdBytes() {
      java.lang.Object ref = targetId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ASPECT_DESCRIPTOR_IDS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList aspectDescriptorIds_;
    /**
     * <pre>
     * The aspects that were responsible for the creation of the action (if any).
     * </pre>
     *
     * <code>repeated string aspect_descriptor_ids = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getAspectDescriptorIdsList() {
      return aspectDescriptorIds_;
    }
    /**
     * <pre>
     * The aspects that were responsible for the creation of the action (if any).
     * </pre>
     *
     * <code>repeated string aspect_descriptor_ids = 2;</code>
     */
    public int getAspectDescriptorIdsCount() {
      return aspectDescriptorIds_.size();
    }
    /**
     * <pre>
     * The aspects that were responsible for the creation of the action (if any).
     * </pre>
     *
     * <code>repeated string aspect_descriptor_ids = 2;</code>
     */
    public java.lang.String getAspectDescriptorIds(int index) {
      return aspectDescriptorIds_.get(index);
    }
    /**
     * <pre>
     * The aspects that were responsible for the creation of the action (if any).
     * </pre>
     *
     * <code>repeated string aspect_descriptor_ids = 2;</code>
     */
    public com.google.protobuf.ByteString
        getAspectDescriptorIdsBytes(int index) {
      return aspectDescriptorIds_.getByteString(index);
    }

    public static final int ACTION_KEY_FIELD_NUMBER = 3;
    private volatile java.lang.Object actionKey_;
    /**
     * <pre>
     * Encodes all significant behavior that might affect the output. The key
     * must change if the work performed by the execution of this action changes.
     * Note that the key doesn't include checksums of the input files.
     * </pre>
     *
     * <code>string action_key = 3;</code>
     */
    public java.lang.String getActionKey() {
      java.lang.Object ref = actionKey_;
      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();
        actionKey_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Encodes all significant behavior that might affect the output. The key
     * must change if the work performed by the execution of this action changes.
     * Note that the key doesn't include checksums of the input files.
     * </pre>
     *
     * <code>string action_key = 3;</code>
     */
    public com.google.protobuf.ByteString
        getActionKeyBytes() {
      java.lang.Object ref = actionKey_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        actionKey_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MNEMONIC_FIELD_NUMBER = 4;
    private volatile java.lang.Object mnemonic_;
    /**
     * <pre>
     * The mnemonic for this kind of action.
     * </pre>
     *
     * <code>string mnemonic = 4;</code>
     */
    public java.lang.String getMnemonic() {
      java.lang.Object ref = mnemonic_;
      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();
        mnemonic_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The mnemonic for this kind of action.
     * </pre>
     *
     * <code>string mnemonic = 4;</code>
     */
    public com.google.protobuf.ByteString
        getMnemonicBytes() {
      java.lang.Object ref = mnemonic_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mnemonic_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONFIGURATION_ID_FIELD_NUMBER = 5;
    private volatile java.lang.Object configurationId_;
    /**
     * <pre>
     * The configuration under which this action is executed.
     * </pre>
     *
     * <code>string configuration_id = 5;</code>
     */
    public java.lang.String getConfigurationId() {
      java.lang.Object ref = configurationId_;
      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();
        configurationId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The configuration under which this action is executed.
     * </pre>
     *
     * <code>string configuration_id = 5;</code>
     */
    public com.google.protobuf.ByteString
        getConfigurationIdBytes() {
      java.lang.Object ref = configurationId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        configurationId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARGUMENTS_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList arguments_;
    /**
     * <pre>
     * The command line arguments of the action. This will be only set if
     * explicitly requested.
     * </pre>
     *
     * <code>repeated string arguments = 6;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getArgumentsList() {
      return arguments_;
    }
    /**
     * <pre>
     * The command line arguments of the action. This will be only set if
     * explicitly requested.
     * </pre>
     *
     * <code>repeated string arguments = 6;</code>
     */
    public int getArgumentsCount() {
      return arguments_.size();
    }
    /**
     * <pre>
     * The command line arguments of the action. This will be only set if
     * explicitly requested.
     * </pre>
     *
     * <code>repeated string arguments = 6;</code>
     */
    public java.lang.String getArguments(int index) {
      return arguments_.get(index);
    }
    /**
     * <pre>
     * The command line arguments of the action. This will be only set if
     * explicitly requested.
     * </pre>
     *
     * <code>repeated string arguments = 6;</code>
     */
    public com.google.protobuf.ByteString
        getArgumentsBytes(int index) {
      return arguments_.getByteString(index);
    }

    public static final int ENVIRONMENT_VARIABLES_FIELD_NUMBER = 7;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> environmentVariables_;
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> getEnvironmentVariablesList() {
      return environmentVariables_;
    }
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
        getEnvironmentVariablesOrBuilderList() {
      return environmentVariables_;
    }
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    public int getEnvironmentVariablesCount() {
      return environmentVariables_.size();
    }
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getEnvironmentVariables(int index) {
      return environmentVariables_.get(index);
    }
    /**
     * <pre>
     * The list of environment variables to be set before executing the command.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getEnvironmentVariablesOrBuilder(
        int index) {
      return environmentVariables_.get(index);
    }

    public static final int INPUT_DEP_SET_IDS_FIELD_NUMBER = 8;
    private com.google.protobuf.LazyStringList inputDepSetIds_;
    /**
     * <pre>
     * The set of input dep sets that the action depends upon. If the action does
     * input discovery, the contents of this set might change during execution.
     * </pre>
     *
     * <code>repeated string input_dep_set_ids = 8;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getInputDepSetIdsList() {
      return inputDepSetIds_;
    }
    /**
     * <pre>
     * The set of input dep sets that the action depends upon. If the action does
     * input discovery, the contents of this set might change during execution.
     * </pre>
     *
     * <code>repeated string input_dep_set_ids = 8;</code>
     */
    public int getInputDepSetIdsCount() {
      return inputDepSetIds_.size();
    }
    /**
     * <pre>
     * The set of input dep sets that the action depends upon. If the action does
     * input discovery, the contents of this set might change during execution.
     * </pre>
     *
     * <code>repeated string input_dep_set_ids = 8;</code>
     */
    public java.lang.String getInputDepSetIds(int index) {
      return inputDepSetIds_.get(index);
    }
    /**
     * <pre>
     * The set of input dep sets that the action depends upon. If the action does
     * input discovery, the contents of this set might change during execution.
     * </pre>
     *
     * <code>repeated string input_dep_set_ids = 8;</code>
     */
    public com.google.protobuf.ByteString
        getInputDepSetIdsBytes(int index) {
      return inputDepSetIds_.getByteString(index);
    }

    public static final int OUTPUT_IDS_FIELD_NUMBER = 9;
    private com.google.protobuf.LazyStringList outputIds_;
    /**
     * <pre>
     * The list of Artifact IDs that represent the output files that this action
     * will generate.
     * </pre>
     *
     * <code>repeated string output_ids = 9;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getOutputIdsList() {
      return outputIds_;
    }
    /**
     * <pre>
     * The list of Artifact IDs that represent the output files that this action
     * will generate.
     * </pre>
     *
     * <code>repeated string output_ids = 9;</code>
     */
    public int getOutputIdsCount() {
      return outputIds_.size();
    }
    /**
     * <pre>
     * The list of Artifact IDs that represent the output files that this action
     * will generate.
     * </pre>
     *
     * <code>repeated string output_ids = 9;</code>
     */
    public java.lang.String getOutputIds(int index) {
      return outputIds_.get(index);
    }
    /**
     * <pre>
     * The list of Artifact IDs that represent the output files that this action
     * will generate.
     * </pre>
     *
     * <code>repeated string output_ids = 9;</code>
     */
    public com.google.protobuf.ByteString
        getOutputIdsBytes(int index) {
      return outputIds_.getByteString(index);
    }

    public static final int DISCOVERS_INPUTS_FIELD_NUMBER = 10;
    private boolean discoversInputs_;
    /**
     * <pre>
     * True iff the action does input discovery during execution.
     * </pre>
     *
     * <code>bool discovers_inputs = 10;</code>
     */
    public boolean getDiscoversInputs() {
      return discoversInputs_;
    }

    public static final int EXECUTION_INFO_FIELD_NUMBER = 11;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> executionInfo_;
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> getExecutionInfoList() {
      return executionInfo_;
    }
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
        getExecutionInfoOrBuilderList() {
      return executionInfo_;
    }
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    public int getExecutionInfoCount() {
      return executionInfo_.size();
    }
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getExecutionInfo(int index) {
      return executionInfo_.get(index);
    }
    /**
     * <pre>
     * Execution info for the action.  Remote execution services may use this
     * information to modify the execution environment, but actions will
     * generally not be aware of it.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getExecutionInfoOrBuilder(
        int index) {
      return executionInfo_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTargetIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, targetId_);
      }
      for (int i = 0; i < aspectDescriptorIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, aspectDescriptorIds_.getRaw(i));
      }
      if (!getActionKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, actionKey_);
      }
      if (!getMnemonicBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, mnemonic_);
      }
      if (!getConfigurationIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, configurationId_);
      }
      for (int i = 0; i < arguments_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, arguments_.getRaw(i));
      }
      for (int i = 0; i < environmentVariables_.size(); i++) {
        output.writeMessage(7, environmentVariables_.get(i));
      }
      for (int i = 0; i < inputDepSetIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, inputDepSetIds_.getRaw(i));
      }
      for (int i = 0; i < outputIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, outputIds_.getRaw(i));
      }
      if (discoversInputs_ != false) {
        output.writeBool(10, discoversInputs_);
      }
      for (int i = 0; i < executionInfo_.size(); i++) {
        output.writeMessage(11, executionInfo_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTargetIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, targetId_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < aspectDescriptorIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(aspectDescriptorIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAspectDescriptorIdsList().size();
      }
      if (!getActionKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, actionKey_);
      }
      if (!getMnemonicBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, mnemonic_);
      }
      if (!getConfigurationIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, configurationId_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < arguments_.size(); i++) {
          dataSize += computeStringSizeNoTag(arguments_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArgumentsList().size();
      }
      for (int i = 0; i < environmentVariables_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, environmentVariables_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < inputDepSetIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(inputDepSetIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getInputDepSetIdsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < outputIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(outputIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getOutputIdsList().size();
      }
      if (discoversInputs_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, discoversInputs_);
      }
      for (int i = 0; i < executionInfo_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, executionInfo_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.Action)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.Action other = (com.google.devtools.build.lib.analysis.AnalysisProtos.Action) obj;

      boolean result = true;
      result = result && getTargetId()
          .equals(other.getTargetId());
      result = result && getAspectDescriptorIdsList()
          .equals(other.getAspectDescriptorIdsList());
      result = result && getActionKey()
          .equals(other.getActionKey());
      result = result && getMnemonic()
          .equals(other.getMnemonic());
      result = result && getConfigurationId()
          .equals(other.getConfigurationId());
      result = result && getArgumentsList()
          .equals(other.getArgumentsList());
      result = result && getEnvironmentVariablesList()
          .equals(other.getEnvironmentVariablesList());
      result = result && getInputDepSetIdsList()
          .equals(other.getInputDepSetIdsList());
      result = result && getOutputIdsList()
          .equals(other.getOutputIdsList());
      result = result && (getDiscoversInputs()
          == other.getDiscoversInputs());
      result = result && getExecutionInfoList()
          .equals(other.getExecutionInfoList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TARGET_ID_FIELD_NUMBER;
      hash = (53 * hash) + getTargetId().hashCode();
      if (getAspectDescriptorIdsCount() > 0) {
        hash = (37 * hash) + ASPECT_DESCRIPTOR_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getAspectDescriptorIdsList().hashCode();
      }
      hash = (37 * hash) + ACTION_KEY_FIELD_NUMBER;
      hash = (53 * hash) + getActionKey().hashCode();
      hash = (37 * hash) + MNEMONIC_FIELD_NUMBER;
      hash = (53 * hash) + getMnemonic().hashCode();
      hash = (37 * hash) + CONFIGURATION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getConfigurationId().hashCode();
      if (getArgumentsCount() > 0) {
        hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getArgumentsList().hashCode();
      }
      if (getEnvironmentVariablesCount() > 0) {
        hash = (37 * hash) + ENVIRONMENT_VARIABLES_FIELD_NUMBER;
        hash = (53 * hash) + getEnvironmentVariablesList().hashCode();
      }
      if (getInputDepSetIdsCount() > 0) {
        hash = (37 * hash) + INPUT_DEP_SET_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getInputDepSetIdsList().hashCode();
      }
      if (getOutputIdsCount() > 0) {
        hash = (37 * hash) + OUTPUT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getOutputIdsList().hashCode();
      }
      hash = (37 * hash) + DISCOVERS_INPUTS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getDiscoversInputs());
      if (getExecutionInfoCount() > 0) {
        hash = (37 * hash) + EXECUTION_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getExecutionInfoList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.Action prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Represents a single action, which is a function from Artifact(s) to
     * Artifact(s).
     * </pre>
     *
     * Protobuf type {@code analysis.Action}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.Action)
        com.google.devtools.build.lib.analysis.AnalysisProtos.ActionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Action_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Action_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.Action.class, com.google.devtools.build.lib.analysis.AnalysisProtos.Action.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.Action.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getEnvironmentVariablesFieldBuilder();
          getExecutionInfoFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        targetId_ = "";

        aspectDescriptorIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        actionKey_ = "";

        mnemonic_ = "";

        configurationId_ = "";

        arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        if (environmentVariablesBuilder_ == null) {
          environmentVariables_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          environmentVariablesBuilder_.clear();
        }
        inputDepSetIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000080);
        outputIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        discoversInputs_ = false;

        if (executionInfoBuilder_ == null) {
          executionInfo_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
        } else {
          executionInfoBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Action_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Action getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.Action.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Action build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Action result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Action buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Action result = new com.google.devtools.build.lib.analysis.AnalysisProtos.Action(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.targetId_ = targetId_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          aspectDescriptorIds_ = aspectDescriptorIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.aspectDescriptorIds_ = aspectDescriptorIds_;
        result.actionKey_ = actionKey_;
        result.mnemonic_ = mnemonic_;
        result.configurationId_ = configurationId_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          arguments_ = arguments_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.arguments_ = arguments_;
        if (environmentVariablesBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            environmentVariables_ = java.util.Collections.unmodifiableList(environmentVariables_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.environmentVariables_ = environmentVariables_;
        } else {
          result.environmentVariables_ = environmentVariablesBuilder_.build();
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          inputDepSetIds_ = inputDepSetIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.inputDepSetIds_ = inputDepSetIds_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          outputIds_ = outputIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.outputIds_ = outputIds_;
        result.discoversInputs_ = discoversInputs_;
        if (executionInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            executionInfo_ = java.util.Collections.unmodifiableList(executionInfo_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.executionInfo_ = executionInfo_;
        } else {
          result.executionInfo_ = executionInfoBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.Action other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.Action.getDefaultInstance()) return this;
        if (!other.getTargetId().isEmpty()) {
          targetId_ = other.targetId_;
          onChanged();
        }
        if (!other.aspectDescriptorIds_.isEmpty()) {
          if (aspectDescriptorIds_.isEmpty()) {
            aspectDescriptorIds_ = other.aspectDescriptorIds_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureAspectDescriptorIdsIsMutable();
            aspectDescriptorIds_.addAll(other.aspectDescriptorIds_);
          }
          onChanged();
        }
        if (!other.getActionKey().isEmpty()) {
          actionKey_ = other.actionKey_;
          onChanged();
        }
        if (!other.getMnemonic().isEmpty()) {
          mnemonic_ = other.mnemonic_;
          onChanged();
        }
        if (!other.getConfigurationId().isEmpty()) {
          configurationId_ = other.configurationId_;
          onChanged();
        }
        if (!other.arguments_.isEmpty()) {
          if (arguments_.isEmpty()) {
            arguments_ = other.arguments_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureArgumentsIsMutable();
            arguments_.addAll(other.arguments_);
          }
          onChanged();
        }
        if (environmentVariablesBuilder_ == null) {
          if (!other.environmentVariables_.isEmpty()) {
            if (environmentVariables_.isEmpty()) {
              environmentVariables_ = other.environmentVariables_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureEnvironmentVariablesIsMutable();
              environmentVariables_.addAll(other.environmentVariables_);
            }
            onChanged();
          }
        } else {
          if (!other.environmentVariables_.isEmpty()) {
            if (environmentVariablesBuilder_.isEmpty()) {
              environmentVariablesBuilder_.dispose();
              environmentVariablesBuilder_ = null;
              environmentVariables_ = other.environmentVariables_;
              bitField0_ = (bitField0_ & ~0x00000040);
              environmentVariablesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEnvironmentVariablesFieldBuilder() : null;
            } else {
              environmentVariablesBuilder_.addAllMessages(other.environmentVariables_);
            }
          }
        }
        if (!other.inputDepSetIds_.isEmpty()) {
          if (inputDepSetIds_.isEmpty()) {
            inputDepSetIds_ = other.inputDepSetIds_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureInputDepSetIdsIsMutable();
            inputDepSetIds_.addAll(other.inputDepSetIds_);
          }
          onChanged();
        }
        if (!other.outputIds_.isEmpty()) {
          if (outputIds_.isEmpty()) {
            outputIds_ = other.outputIds_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureOutputIdsIsMutable();
            outputIds_.addAll(other.outputIds_);
          }
          onChanged();
        }
        if (other.getDiscoversInputs() != false) {
          setDiscoversInputs(other.getDiscoversInputs());
        }
        if (executionInfoBuilder_ == null) {
          if (!other.executionInfo_.isEmpty()) {
            if (executionInfo_.isEmpty()) {
              executionInfo_ = other.executionInfo_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureExecutionInfoIsMutable();
              executionInfo_.addAll(other.executionInfo_);
            }
            onChanged();
          }
        } else {
          if (!other.executionInfo_.isEmpty()) {
            if (executionInfoBuilder_.isEmpty()) {
              executionInfoBuilder_.dispose();
              executionInfoBuilder_ = null;
              executionInfo_ = other.executionInfo_;
              bitField0_ = (bitField0_ & ~0x00000400);
              executionInfoBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getExecutionInfoFieldBuilder() : null;
            } else {
              executionInfoBuilder_.addAllMessages(other.executionInfo_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object targetId_ = "";
      /**
       * <pre>
       * The target that was responsible for the creation of the action.
       * </pre>
       *
       * <code>string target_id = 1;</code>
       */
      public java.lang.String getTargetId() {
        java.lang.Object ref = targetId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          targetId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The target that was responsible for the creation of the action.
       * </pre>
       *
       * <code>string target_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTargetIdBytes() {
        java.lang.Object ref = targetId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The target that was responsible for the creation of the action.
       * </pre>
       *
       * <code>string target_id = 1;</code>
       */
      public Builder setTargetId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        targetId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The target that was responsible for the creation of the action.
       * </pre>
       *
       * <code>string target_id = 1;</code>
       */
      public Builder clearTargetId() {
        
        targetId_ = getDefaultInstance().getTargetId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The target that was responsible for the creation of the action.
       * </pre>
       *
       * <code>string target_id = 1;</code>
       */
      public Builder setTargetIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        targetId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList aspectDescriptorIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAspectDescriptorIdsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          aspectDescriptorIds_ = new com.google.protobuf.LazyStringArrayList(aspectDescriptorIds_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getAspectDescriptorIdsList() {
        return aspectDescriptorIds_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public int getAspectDescriptorIdsCount() {
        return aspectDescriptorIds_.size();
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public java.lang.String getAspectDescriptorIds(int index) {
        return aspectDescriptorIds_.get(index);
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public com.google.protobuf.ByteString
          getAspectDescriptorIdsBytes(int index) {
        return aspectDescriptorIds_.getByteString(index);
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public Builder setAspectDescriptorIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAspectDescriptorIdsIsMutable();
        aspectDescriptorIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public Builder addAspectDescriptorIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAspectDescriptorIdsIsMutable();
        aspectDescriptorIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public Builder addAllAspectDescriptorIds(
          java.lang.Iterable<java.lang.String> values) {
        ensureAspectDescriptorIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, aspectDescriptorIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public Builder clearAspectDescriptorIds() {
        aspectDescriptorIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The aspects that were responsible for the creation of the action (if any).
       * </pre>
       *
       * <code>repeated string aspect_descriptor_ids = 2;</code>
       */
      public Builder addAspectDescriptorIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureAspectDescriptorIdsIsMutable();
        aspectDescriptorIds_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object actionKey_ = "";
      /**
       * <pre>
       * Encodes all significant behavior that might affect the output. The key
       * must change if the work performed by the execution of this action changes.
       * Note that the key doesn't include checksums of the input files.
       * </pre>
       *
       * <code>string action_key = 3;</code>
       */
      public java.lang.String getActionKey() {
        java.lang.Object ref = actionKey_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          actionKey_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Encodes all significant behavior that might affect the output. The key
       * must change if the work performed by the execution of this action changes.
       * Note that the key doesn't include checksums of the input files.
       * </pre>
       *
       * <code>string action_key = 3;</code>
       */
      public com.google.protobuf.ByteString
          getActionKeyBytes() {
        java.lang.Object ref = actionKey_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          actionKey_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Encodes all significant behavior that might affect the output. The key
       * must change if the work performed by the execution of this action changes.
       * Note that the key doesn't include checksums of the input files.
       * </pre>
       *
       * <code>string action_key = 3;</code>
       */
      public Builder setActionKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        actionKey_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Encodes all significant behavior that might affect the output. The key
       * must change if the work performed by the execution of this action changes.
       * Note that the key doesn't include checksums of the input files.
       * </pre>
       *
       * <code>string action_key = 3;</code>
       */
      public Builder clearActionKey() {
        
        actionKey_ = getDefaultInstance().getActionKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Encodes all significant behavior that might affect the output. The key
       * must change if the work performed by the execution of this action changes.
       * Note that the key doesn't include checksums of the input files.
       * </pre>
       *
       * <code>string action_key = 3;</code>
       */
      public Builder setActionKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        actionKey_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object mnemonic_ = "";
      /**
       * <pre>
       * The mnemonic for this kind of action.
       * </pre>
       *
       * <code>string mnemonic = 4;</code>
       */
      public java.lang.String getMnemonic() {
        java.lang.Object ref = mnemonic_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          mnemonic_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The mnemonic for this kind of action.
       * </pre>
       *
       * <code>string mnemonic = 4;</code>
       */
      public com.google.protobuf.ByteString
          getMnemonicBytes() {
        java.lang.Object ref = mnemonic_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mnemonic_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The mnemonic for this kind of action.
       * </pre>
       *
       * <code>string mnemonic = 4;</code>
       */
      public Builder setMnemonic(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        mnemonic_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The mnemonic for this kind of action.
       * </pre>
       *
       * <code>string mnemonic = 4;</code>
       */
      public Builder clearMnemonic() {
        
        mnemonic_ = getDefaultInstance().getMnemonic();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The mnemonic for this kind of action.
       * </pre>
       *
       * <code>string mnemonic = 4;</code>
       */
      public Builder setMnemonicBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        mnemonic_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object configurationId_ = "";
      /**
       * <pre>
       * The configuration under which this action is executed.
       * </pre>
       *
       * <code>string configuration_id = 5;</code>
       */
      public java.lang.String getConfigurationId() {
        java.lang.Object ref = configurationId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          configurationId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The configuration under which this action is executed.
       * </pre>
       *
       * <code>string configuration_id = 5;</code>
       */
      public com.google.protobuf.ByteString
          getConfigurationIdBytes() {
        java.lang.Object ref = configurationId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          configurationId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The configuration under which this action is executed.
       * </pre>
       *
       * <code>string configuration_id = 5;</code>
       */
      public Builder setConfigurationId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        configurationId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The configuration under which this action is executed.
       * </pre>
       *
       * <code>string configuration_id = 5;</code>
       */
      public Builder clearConfigurationId() {
        
        configurationId_ = getDefaultInstance().getConfigurationId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The configuration under which this action is executed.
       * </pre>
       *
       * <code>string configuration_id = 5;</code>
       */
      public Builder setConfigurationIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        configurationId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureArgumentsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          arguments_ = new com.google.protobuf.LazyStringArrayList(arguments_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getArgumentsList() {
        return arguments_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public int getArgumentsCount() {
        return arguments_.size();
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public java.lang.String getArguments(int index) {
        return arguments_.get(index);
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public com.google.protobuf.ByteString
          getArgumentsBytes(int index) {
        return arguments_.getByteString(index);
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public Builder setArguments(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgumentsIsMutable();
        arguments_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public Builder addArguments(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgumentsIsMutable();
        arguments_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public Builder addAllArguments(
          java.lang.Iterable<java.lang.String> values) {
        ensureArgumentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, arguments_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public Builder clearArguments() {
        arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command line arguments of the action. This will be only set if
       * explicitly requested.
       * </pre>
       *
       * <code>repeated string arguments = 6;</code>
       */
      public Builder addArgumentsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureArgumentsIsMutable();
        arguments_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> environmentVariables_ =
        java.util.Collections.emptyList();
      private void ensureEnvironmentVariablesIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          environmentVariables_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair>(environmentVariables_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> environmentVariablesBuilder_;

      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> getEnvironmentVariablesList() {
        if (environmentVariablesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(environmentVariables_);
        } else {
          return environmentVariablesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public int getEnvironmentVariablesCount() {
        if (environmentVariablesBuilder_ == null) {
          return environmentVariables_.size();
        } else {
          return environmentVariablesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getEnvironmentVariables(int index) {
        if (environmentVariablesBuilder_ == null) {
          return environmentVariables_.get(index);
        } else {
          return environmentVariablesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder setEnvironmentVariables(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (environmentVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvironmentVariablesIsMutable();
          environmentVariables_.set(index, value);
          onChanged();
        } else {
          environmentVariablesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder setEnvironmentVariables(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (environmentVariablesBuilder_ == null) {
          ensureEnvironmentVariablesIsMutable();
          environmentVariables_.set(index, builderForValue.build());
          onChanged();
        } else {
          environmentVariablesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder addEnvironmentVariables(com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (environmentVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvironmentVariablesIsMutable();
          environmentVariables_.add(value);
          onChanged();
        } else {
          environmentVariablesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder addEnvironmentVariables(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (environmentVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnvironmentVariablesIsMutable();
          environmentVariables_.add(index, value);
          onChanged();
        } else {
          environmentVariablesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder addEnvironmentVariables(
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (environmentVariablesBuilder_ == null) {
          ensureEnvironmentVariablesIsMutable();
          environmentVariables_.add(builderForValue.build());
          onChanged();
        } else {
          environmentVariablesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder addEnvironmentVariables(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (environmentVariablesBuilder_ == null) {
          ensureEnvironmentVariablesIsMutable();
          environmentVariables_.add(index, builderForValue.build());
          onChanged();
        } else {
          environmentVariablesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder addAllEnvironmentVariables(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> values) {
        if (environmentVariablesBuilder_ == null) {
          ensureEnvironmentVariablesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, environmentVariables_);
          onChanged();
        } else {
          environmentVariablesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder clearEnvironmentVariables() {
        if (environmentVariablesBuilder_ == null) {
          environmentVariables_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          environmentVariablesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public Builder removeEnvironmentVariables(int index) {
        if (environmentVariablesBuilder_ == null) {
          ensureEnvironmentVariablesIsMutable();
          environmentVariables_.remove(index);
          onChanged();
        } else {
          environmentVariablesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder getEnvironmentVariablesBuilder(
          int index) {
        return getEnvironmentVariablesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getEnvironmentVariablesOrBuilder(
          int index) {
        if (environmentVariablesBuilder_ == null) {
          return environmentVariables_.get(index);  } else {
          return environmentVariablesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
           getEnvironmentVariablesOrBuilderList() {
        if (environmentVariablesBuilder_ != null) {
          return environmentVariablesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(environmentVariables_);
        }
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder addEnvironmentVariablesBuilder() {
        return getEnvironmentVariablesFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.getDefaultInstance());
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder addEnvironmentVariablesBuilder(
          int index) {
        return getEnvironmentVariablesFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.getDefaultInstance());
      }
      /**
       * <pre>
       * The list of environment variables to be set before executing the command.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair environment_variables = 7;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder> 
           getEnvironmentVariablesBuilderList() {
        return getEnvironmentVariablesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
          getEnvironmentVariablesFieldBuilder() {
        if (environmentVariablesBuilder_ == null) {
          environmentVariablesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder>(
                  environmentVariables_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          environmentVariables_ = null;
        }
        return environmentVariablesBuilder_;
      }

      private com.google.protobuf.LazyStringList inputDepSetIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureInputDepSetIdsIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          inputDepSetIds_ = new com.google.protobuf.LazyStringArrayList(inputDepSetIds_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getInputDepSetIdsList() {
        return inputDepSetIds_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public int getInputDepSetIdsCount() {
        return inputDepSetIds_.size();
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public java.lang.String getInputDepSetIds(int index) {
        return inputDepSetIds_.get(index);
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public com.google.protobuf.ByteString
          getInputDepSetIdsBytes(int index) {
        return inputDepSetIds_.getByteString(index);
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public Builder setInputDepSetIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureInputDepSetIdsIsMutable();
        inputDepSetIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public Builder addInputDepSetIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureInputDepSetIdsIsMutable();
        inputDepSetIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public Builder addAllInputDepSetIds(
          java.lang.Iterable<java.lang.String> values) {
        ensureInputDepSetIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, inputDepSetIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public Builder clearInputDepSetIds() {
        inputDepSetIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The set of input dep sets that the action depends upon. If the action does
       * input discovery, the contents of this set might change during execution.
       * </pre>
       *
       * <code>repeated string input_dep_set_ids = 8;</code>
       */
      public Builder addInputDepSetIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureInputDepSetIdsIsMutable();
        inputDepSetIds_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList outputIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureOutputIdsIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          outputIds_ = new com.google.protobuf.LazyStringArrayList(outputIds_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getOutputIdsList() {
        return outputIds_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public int getOutputIdsCount() {
        return outputIds_.size();
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public java.lang.String getOutputIds(int index) {
        return outputIds_.get(index);
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public com.google.protobuf.ByteString
          getOutputIdsBytes(int index) {
        return outputIds_.getByteString(index);
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public Builder setOutputIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureOutputIdsIsMutable();
        outputIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public Builder addOutputIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureOutputIdsIsMutable();
        outputIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public Builder addAllOutputIds(
          java.lang.Iterable<java.lang.String> values) {
        ensureOutputIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, outputIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public Builder clearOutputIds() {
        outputIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of Artifact IDs that represent the output files that this action
       * will generate.
       * </pre>
       *
       * <code>repeated string output_ids = 9;</code>
       */
      public Builder addOutputIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureOutputIdsIsMutable();
        outputIds_.add(value);
        onChanged();
        return this;
      }

      private boolean discoversInputs_ ;
      /**
       * <pre>
       * True iff the action does input discovery during execution.
       * </pre>
       *
       * <code>bool discovers_inputs = 10;</code>
       */
      public boolean getDiscoversInputs() {
        return discoversInputs_;
      }
      /**
       * <pre>
       * True iff the action does input discovery during execution.
       * </pre>
       *
       * <code>bool discovers_inputs = 10;</code>
       */
      public Builder setDiscoversInputs(boolean value) {
        
        discoversInputs_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * True iff the action does input discovery during execution.
       * </pre>
       *
       * <code>bool discovers_inputs = 10;</code>
       */
      public Builder clearDiscoversInputs() {
        
        discoversInputs_ = false;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> executionInfo_ =
        java.util.Collections.emptyList();
      private void ensureExecutionInfoIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          executionInfo_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair>(executionInfo_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> executionInfoBuilder_;

      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> getExecutionInfoList() {
        if (executionInfoBuilder_ == null) {
          return java.util.Collections.unmodifiableList(executionInfo_);
        } else {
          return executionInfoBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public int getExecutionInfoCount() {
        if (executionInfoBuilder_ == null) {
          return executionInfo_.size();
        } else {
          return executionInfoBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getExecutionInfo(int index) {
        if (executionInfoBuilder_ == null) {
          return executionInfo_.get(index);
        } else {
          return executionInfoBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder setExecutionInfo(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (executionInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExecutionInfoIsMutable();
          executionInfo_.set(index, value);
          onChanged();
        } else {
          executionInfoBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder setExecutionInfo(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (executionInfoBuilder_ == null) {
          ensureExecutionInfoIsMutable();
          executionInfo_.set(index, builderForValue.build());
          onChanged();
        } else {
          executionInfoBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder addExecutionInfo(com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (executionInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExecutionInfoIsMutable();
          executionInfo_.add(value);
          onChanged();
        } else {
          executionInfoBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder addExecutionInfo(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (executionInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExecutionInfoIsMutable();
          executionInfo_.add(index, value);
          onChanged();
        } else {
          executionInfoBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder addExecutionInfo(
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (executionInfoBuilder_ == null) {
          ensureExecutionInfoIsMutable();
          executionInfo_.add(builderForValue.build());
          onChanged();
        } else {
          executionInfoBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder addExecutionInfo(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (executionInfoBuilder_ == null) {
          ensureExecutionInfoIsMutable();
          executionInfo_.add(index, builderForValue.build());
          onChanged();
        } else {
          executionInfoBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder addAllExecutionInfo(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> values) {
        if (executionInfoBuilder_ == null) {
          ensureExecutionInfoIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, executionInfo_);
          onChanged();
        } else {
          executionInfoBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder clearExecutionInfo() {
        if (executionInfoBuilder_ == null) {
          executionInfo_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          executionInfoBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public Builder removeExecutionInfo(int index) {
        if (executionInfoBuilder_ == null) {
          ensureExecutionInfoIsMutable();
          executionInfo_.remove(index);
          onChanged();
        } else {
          executionInfoBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder getExecutionInfoBuilder(
          int index) {
        return getExecutionInfoFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getExecutionInfoOrBuilder(
          int index) {
        if (executionInfoBuilder_ == null) {
          return executionInfo_.get(index);  } else {
          return executionInfoBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
           getExecutionInfoOrBuilderList() {
        if (executionInfoBuilder_ != null) {
          return executionInfoBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(executionInfo_);
        }
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder addExecutionInfoBuilder() {
        return getExecutionInfoFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.getDefaultInstance());
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder addExecutionInfoBuilder(
          int index) {
        return getExecutionInfoFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.getDefaultInstance());
      }
      /**
       * <pre>
       * Execution info for the action.  Remote execution services may use this
       * information to modify the execution environment, but actions will
       * generally not be aware of it.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair execution_info = 11;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder> 
           getExecutionInfoBuilderList() {
        return getExecutionInfoFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
          getExecutionInfoFieldBuilder() {
        if (executionInfoBuilder_ == null) {
          executionInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder>(
                  executionInfo_,
                  ((bitField0_ & 0x00000400) == 0x00000400),
                  getParentForChildren(),
                  isClean());
          executionInfo_ = null;
        }
        return executionInfoBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.Action)
    }

    // @@protoc_insertion_point(class_scope:analysis.Action)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.Action DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.Action();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.Action getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Action getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TargetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.Target)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Identifier for this target; this is an opaque string, only valid for this
     * particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    java.lang.String getId();
    /**
     * <pre>
     * Identifier for this target; this is an opaque string, only valid for this
     * particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * Label of the target, e.g. //foo:bar.
     * </pre>
     *
     * <code>string label = 2;</code>
     */
    java.lang.String getLabel();
    /**
     * <pre>
     * Label of the target, e.g. //foo:bar.
     * </pre>
     *
     * <code>string label = 2;</code>
     */
    com.google.protobuf.ByteString
        getLabelBytes();

    /**
     * <pre>
     * Class of the rule.
     * </pre>
     *
     * <code>string rule_class_id = 3;</code>
     */
    java.lang.String getRuleClassId();
    /**
     * <pre>
     * Class of the rule.
     * </pre>
     *
     * <code>string rule_class_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getRuleClassIdBytes();
  }
  /**
   * <pre>
   * Represents a single target (without configuration information) that is
   * associated with an action.
   * </pre>
   *
   * Protobuf type {@code analysis.Target}
   */
  public  static final class Target extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.Target)
      TargetOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Target.newBuilder() to construct.
    private Target(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Target() {
      id_ = "";
      label_ = "";
      ruleClassId_ = "";
    }

    @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();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              label_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              ruleClassId_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Target_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Target_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.Target.class, com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * Identifier for this target; this is an opaque string, only valid for this
     * particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Identifier for this target; this is an opaque string, only valid for this
     * particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LABEL_FIELD_NUMBER = 2;
    private volatile java.lang.Object label_;
    /**
     * <pre>
     * Label of the target, e.g. //foo:bar.
     * </pre>
     *
     * <code>string label = 2;</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();
        label_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Label of the target, e.g. //foo:bar.
     * </pre>
     *
     * <code>string label = 2;</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 RULE_CLASS_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object ruleClassId_;
    /**
     * <pre>
     * Class of the rule.
     * </pre>
     *
     * <code>string rule_class_id = 3;</code>
     */
    public java.lang.String getRuleClassId() {
      java.lang.Object ref = ruleClassId_;
      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();
        ruleClassId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Class of the rule.
     * </pre>
     *
     * <code>string rule_class_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getRuleClassIdBytes() {
      java.lang.Object ref = ruleClassId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ruleClassId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getLabelBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, label_);
      }
      if (!getRuleClassIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, ruleClassId_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getLabelBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, label_);
      }
      if (!getRuleClassIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, ruleClassId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.Target)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.Target other = (com.google.devtools.build.lib.analysis.AnalysisProtos.Target) obj;

      boolean result = true;
      result = result && getId()
          .equals(other.getId());
      result = result && getLabel()
          .equals(other.getLabel());
      result = result && getRuleClassId()
          .equals(other.getRuleClassId());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getLabel().hashCode();
      hash = (37 * hash) + RULE_CLASS_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRuleClassId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.Target parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.Target parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.Target parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.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.analysis.AnalysisProtos.Target parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.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.analysis.AnalysisProtos.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.analysis.AnalysisProtos.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.analysis.AnalysisProtos.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.analysis.AnalysisProtos.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.analysis.AnalysisProtos.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.analysis.AnalysisProtos.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);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.Target prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Represents a single target (without configuration information) that is
     * associated with an action.
     * </pre>
     *
     * Protobuf type {@code analysis.Target}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.Target)
        com.google.devtools.build.lib.analysis.AnalysisProtos.TargetOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Target_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Target_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.Target.class, com.google.devtools.build.lib.analysis.AnalysisProtos.Target.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.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) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        label_ = "";

        ruleClassId_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Target_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Target getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.Target.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Target build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Target result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Target buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Target result = new com.google.devtools.build.lib.analysis.AnalysisProtos.Target(this);
        result.id_ = id_;
        result.label_ = label_;
        result.ruleClassId_ = ruleClassId_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.Target other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.Target.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getLabel().isEmpty()) {
          label_ = other.label_;
          onChanged();
        }
        if (!other.getRuleClassId().isEmpty()) {
          ruleClassId_ = other.ruleClassId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Target parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.analysis.AnalysisProtos.Target) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Identifier for this target; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this target; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this target; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this target; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this target; this is an opaque string, only valid for this
       * particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object label_ = "";
      /**
       * <pre>
       * Label of the target, e.g. //foo:bar.
       * </pre>
       *
       * <code>string label = 2;</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();
          label_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Label of the target, e.g. //foo:bar.
       * </pre>
       *
       * <code>string label = 2;</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>
       * Label of the target, e.g. //foo:bar.
       * </pre>
       *
       * <code>string label = 2;</code>
       */
      public Builder setLabel(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        label_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Label of the target, e.g. //foo:bar.
       * </pre>
       *
       * <code>string label = 2;</code>
       */
      public Builder clearLabel() {
        
        label_ = getDefaultInstance().getLabel();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Label of the target, e.g. //foo:bar.
       * </pre>
       *
       * <code>string label = 2;</code>
       */
      public Builder setLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        label_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object ruleClassId_ = "";
      /**
       * <pre>
       * Class of the rule.
       * </pre>
       *
       * <code>string rule_class_id = 3;</code>
       */
      public java.lang.String getRuleClassId() {
        java.lang.Object ref = ruleClassId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ruleClassId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Class of the rule.
       * </pre>
       *
       * <code>string rule_class_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getRuleClassIdBytes() {
        java.lang.Object ref = ruleClassId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ruleClassId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Class of the rule.
       * </pre>
       *
       * <code>string rule_class_id = 3;</code>
       */
      public Builder setRuleClassId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ruleClassId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Class of the rule.
       * </pre>
       *
       * <code>string rule_class_id = 3;</code>
       */
      public Builder clearRuleClassId() {
        
        ruleClassId_ = getDefaultInstance().getRuleClassId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Class of the rule.
       * </pre>
       *
       * <code>string rule_class_id = 3;</code>
       */
      public Builder setRuleClassIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ruleClassId_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.Target)
    }

    // @@protoc_insertion_point(class_scope:analysis.Target)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.Target DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.Target();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.Target getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Target>
        PARSER = new com.google.protobuf.AbstractParser<Target>() {
      @java.lang.Override
      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;
    }

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Target getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RuleClassOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.RuleClass)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Identifier for this rule class; this is an opaque string, only valid for
     * this particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    java.lang.String getId();
    /**
     * <pre>
     * Identifier for this rule class; this is an opaque string, only valid for
     * this particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * Name of the rule class, e.g. cc_library.
     * </pre>
     *
     * <code>string name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the rule class, e.g. cc_library.
     * </pre>
     *
     * <code>string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * Protobuf type {@code analysis.RuleClass}
   */
  public  static final class RuleClass extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.RuleClass)
      RuleClassOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RuleClass.newBuilder() to construct.
    private RuleClass(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RuleClass() {
      id_ = "";
      name_ = "";
    }

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

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_RuleClass_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_RuleClass_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.class, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * Identifier for this rule class; this is an opaque string, only valid for
     * this particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Identifier for this rule class; this is an opaque string, only valid for
     * this particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Name of the rule class, e.g. cc_library.
     * </pre>
     *
     * <code>string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the rule class, e.g. cc_library.
     * </pre>
     *
     * <code>string name = 2;</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;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass other = (com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass) obj;

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

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

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code analysis.RuleClass}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.RuleClass)
        com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClassOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_RuleClass_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_RuleClass_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.class, com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        name_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_RuleClass_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass result = new com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass(this);
        result.id_ = id_;
        result.name_ = name_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Identifier for this rule class; this is an opaque string, only valid for
       * this particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this rule class; this is an opaque string, only valid for
       * this particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this rule class; this is an opaque string, only valid for
       * this particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this rule class; this is an opaque string, only valid for
       * this particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this rule class; this is an opaque string, only valid for
       * this particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the rule class, e.g. cc_library.
       * </pre>
       *
       * <code>string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the rule class, e.g. cc_library.
       * </pre>
       *
       * <code>string name = 2;</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>
       * Name of the rule class, e.g. cc_library.
       * </pre>
       *
       * <code>string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the rule class, e.g. cc_library.
       * </pre>
       *
       * <code>string name = 2;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the rule class, e.g. cc_library.
       * </pre>
       *
       * <code>string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.RuleClass)
    }

    // @@protoc_insertion_point(class_scope:analysis.RuleClass)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.RuleClass getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AspectDescriptorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.AspectDescriptor)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Identifier for this aspect descriptor; this is an opaque string, only valid
     * for the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    java.lang.String getId();
    /**
     * <pre>
     * Identifier for this aspect descriptor; this is an opaque string, only valid
     * for the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * The name of the corresponding aspect. For native aspects, it's the Java
     * class name, for Skylark aspects it's the bzl file followed by a % sign
     * followed by the name of the aspect.
     * </pre>
     *
     * <code>string name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * The name of the corresponding aspect. For native aspects, it's the Java
     * class name, for Skylark aspects it's the bzl file followed by a % sign
     * followed by the name of the aspect.
     * </pre>
     *
     * <code>string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> 
        getParametersList();
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getParameters(int index);
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    int getParametersCount();
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
        getParametersOrBuilderList();
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getParametersOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Represents an invocation specific descriptor of an aspect.
   * </pre>
   *
   * Protobuf type {@code analysis.AspectDescriptor}
   */
  public  static final class AspectDescriptor extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.AspectDescriptor)
      AspectDescriptorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AspectDescriptor.newBuilder() to construct.
    private AspectDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AspectDescriptor() {
      id_ = "";
      name_ = "";
      parameters_ = java.util.Collections.emptyList();
    }

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

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                parameters_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair>();
                mutable_bitField0_ |= 0x00000004;
              }
              parameters_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          parameters_ = java.util.Collections.unmodifiableList(parameters_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_AspectDescriptor_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_AspectDescriptor_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.class, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder.class);
    }

    private int bitField0_;
    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * Identifier for this aspect descriptor; this is an opaque string, only valid
     * for the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Identifier for this aspect descriptor; this is an opaque string, only valid
     * for the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * The name of the corresponding aspect. For native aspects, it's the Java
     * class name, for Skylark aspects it's the bzl file followed by a % sign
     * followed by the name of the aspect.
     * </pre>
     *
     * <code>string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The name of the corresponding aspect. For native aspects, it's the Java
     * class name, for Skylark aspects it's the bzl file followed by a % sign
     * followed by the name of the aspect.
     * </pre>
     *
     * <code>string name = 2;</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 PARAMETERS_FIELD_NUMBER = 3;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> parameters_;
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> getParametersList() {
      return parameters_;
    }
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
        getParametersOrBuilderList() {
      return parameters_;
    }
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    public int getParametersCount() {
      return parameters_.size();
    }
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getParameters(int index) {
      return parameters_.get(index);
    }
    /**
     * <pre>
     * The list of parameters bound to a particular invocation of that aspect on
     * a target. Note that aspects can be executed multiple times on the same
     * target in different order.
     * </pre>
     *
     * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getParametersOrBuilder(
        int index) {
      return parameters_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      for (int i = 0; i < parameters_.size(); i++) {
        output.writeMessage(3, parameters_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      for (int i = 0; i < parameters_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, parameters_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor other = (com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor) obj;

      boolean result = true;
      result = result && getId()
          .equals(other.getId());
      result = result && getName()
          .equals(other.getName());
      result = result && getParametersList()
          .equals(other.getParametersList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getParametersCount() > 0) {
        hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
        hash = (53 * hash) + getParametersList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Represents an invocation specific descriptor of an aspect.
     * </pre>
     *
     * Protobuf type {@code analysis.AspectDescriptor}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.AspectDescriptor)
        com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_AspectDescriptor_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_AspectDescriptor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.class, com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getParametersFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        name_ = "";

        if (parametersBuilder_ == null) {
          parameters_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          parametersBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_AspectDescriptor_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor result = new com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.id_ = id_;
        result.name_ = name_;
        if (parametersBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            parameters_ = java.util.Collections.unmodifiableList(parameters_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.parameters_ = parameters_;
        } else {
          result.parameters_ = parametersBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (parametersBuilder_ == null) {
          if (!other.parameters_.isEmpty()) {
            if (parameters_.isEmpty()) {
              parameters_ = other.parameters_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureParametersIsMutable();
              parameters_.addAll(other.parameters_);
            }
            onChanged();
          }
        } else {
          if (!other.parameters_.isEmpty()) {
            if (parametersBuilder_.isEmpty()) {
              parametersBuilder_.dispose();
              parametersBuilder_ = null;
              parameters_ = other.parameters_;
              bitField0_ = (bitField0_ & ~0x00000004);
              parametersBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getParametersFieldBuilder() : null;
            } else {
              parametersBuilder_.addAllMessages(other.parameters_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Identifier for this aspect descriptor; this is an opaque string, only valid
       * for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this aspect descriptor; this is an opaque string, only valid
       * for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this aspect descriptor; this is an opaque string, only valid
       * for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this aspect descriptor; this is an opaque string, only valid
       * for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this aspect descriptor; this is an opaque string, only valid
       * for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * The name of the corresponding aspect. For native aspects, it's the Java
       * class name, for Skylark aspects it's the bzl file followed by a % sign
       * followed by the name of the aspect.
       * </pre>
       *
       * <code>string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the corresponding aspect. For native aspects, it's the Java
       * class name, for Skylark aspects it's the bzl file followed by a % sign
       * followed by the name of the aspect.
       * </pre>
       *
       * <code>string name = 2;</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 corresponding aspect. For native aspects, it's the Java
       * class name, for Skylark aspects it's the bzl file followed by a % sign
       * followed by the name of the aspect.
       * </pre>
       *
       * <code>string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the corresponding aspect. For native aspects, it's the Java
       * class name, for Skylark aspects it's the bzl file followed by a % sign
       * followed by the name of the aspect.
       * </pre>
       *
       * <code>string name = 2;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the corresponding aspect. For native aspects, it's the Java
       * class name, for Skylark aspects it's the bzl file followed by a % sign
       * followed by the name of the aspect.
       * </pre>
       *
       * <code>string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> parameters_ =
        java.util.Collections.emptyList();
      private void ensureParametersIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          parameters_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair>(parameters_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> parametersBuilder_;

      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> getParametersList() {
        if (parametersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(parameters_);
        } else {
          return parametersBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public int getParametersCount() {
        if (parametersBuilder_ == null) {
          return parameters_.size();
        } else {
          return parametersBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getParameters(int index) {
        if (parametersBuilder_ == null) {
          return parameters_.get(index);
        } else {
          return parametersBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder setParameters(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.set(index, value);
          onChanged();
        } else {
          parametersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder setParameters(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.set(index, builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder addParameters(com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.add(value);
          onChanged();
        } else {
          parametersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder addParameters(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.add(index, value);
          onChanged();
        } else {
          parametersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder addParameters(
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.add(builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder addParameters(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.add(index, builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder addAllParameters(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair> values) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, parameters_);
          onChanged();
        } else {
          parametersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder clearParameters() {
        if (parametersBuilder_ == null) {
          parameters_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          parametersBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public Builder removeParameters(int index) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.remove(index);
          onChanged();
        } else {
          parametersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder getParametersBuilder(
          int index) {
        return getParametersFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder getParametersOrBuilder(
          int index) {
        if (parametersBuilder_ == null) {
          return parameters_.get(index);  } else {
          return parametersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
           getParametersOrBuilderList() {
        if (parametersBuilder_ != null) {
          return parametersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(parameters_);
        }
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder addParametersBuilder() {
        return getParametersFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.getDefaultInstance());
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder addParametersBuilder(
          int index) {
        return getParametersFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.getDefaultInstance());
      }
      /**
       * <pre>
       * The list of parameters bound to a particular invocation of that aspect on
       * a target. Note that aspects can be executed multiple times on the same
       * target in different order.
       * </pre>
       *
       * <code>repeated .analysis.KeyValuePair parameters = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder> 
           getParametersBuilderList() {
        return getParametersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder> 
          getParametersFieldBuilder() {
        if (parametersBuilder_ == null) {
          parametersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder>(
                  parameters_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          parameters_ = null;
        }
        return parametersBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.AspectDescriptor)
    }

    // @@protoc_insertion_point(class_scope:analysis.AspectDescriptor)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.AspectDescriptor getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DepSetOfFilesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.DepSetOfFiles)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Identifier for this named set of files; this is an opaque string, only
     * valid for the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    java.lang.String getId();
    /**
     * <pre>
     * Identifier for this named set of files; this is an opaque string, only
     * valid for the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * Other transitively included named set of files.
     * </pre>
     *
     * <code>repeated string transitive_dep_set_ids = 2;</code>
     */
    java.util.List<java.lang.String>
        getTransitiveDepSetIdsList();
    /**
     * <pre>
     * Other transitively included named set of files.
     * </pre>
     *
     * <code>repeated string transitive_dep_set_ids = 2;</code>
     */
    int getTransitiveDepSetIdsCount();
    /**
     * <pre>
     * Other transitively included named set of files.
     * </pre>
     *
     * <code>repeated string transitive_dep_set_ids = 2;</code>
     */
    java.lang.String getTransitiveDepSetIds(int index);
    /**
     * <pre>
     * Other transitively included named set of files.
     * </pre>
     *
     * <code>repeated string transitive_dep_set_ids = 2;</code>
     */
    com.google.protobuf.ByteString
        getTransitiveDepSetIdsBytes(int index);

    /**
     * <pre>
     * The list of input artifact IDs that are immediately contained in this set.
     * </pre>
     *
     * <code>repeated string direct_artifact_ids = 3;</code>
     */
    java.util.List<java.lang.String>
        getDirectArtifactIdsList();
    /**
     * <pre>
     * The list of input artifact IDs that are immediately contained in this set.
     * </pre>
     *
     * <code>repeated string direct_artifact_ids = 3;</code>
     */
    int getDirectArtifactIdsCount();
    /**
     * <pre>
     * The list of input artifact IDs that are immediately contained in this set.
     * </pre>
     *
     * <code>repeated string direct_artifact_ids = 3;</code>
     */
    java.lang.String getDirectArtifactIds(int index);
    /**
     * <pre>
     * The list of input artifact IDs that are immediately contained in this set.
     * </pre>
     *
     * <code>repeated string direct_artifact_ids = 3;</code>
     */
    com.google.protobuf.ByteString
        getDirectArtifactIdsBytes(int index);
  }
  /**
   * Protobuf type {@code analysis.DepSetOfFiles}
   */
  public  static final class DepSetOfFiles extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.DepSetOfFiles)
      DepSetOfFilesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DepSetOfFiles.newBuilder() to construct.
    private DepSetOfFiles(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DepSetOfFiles() {
      id_ = "";
      transitiveDepSetIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      directArtifactIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                transitiveDepSetIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              transitiveDepSetIds_.add(s);
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                directArtifactIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              directArtifactIds_.add(s);
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          transitiveDepSetIds_ = transitiveDepSetIds_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          directArtifactIds_ = directArtifactIds_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_DepSetOfFiles_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_DepSetOfFiles_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.class, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder.class);
    }

    private int bitField0_;
    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * Identifier for this named set of files; this is an opaque string, only
     * valid for the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Identifier for this named set of files; this is an opaque string, only
     * valid for the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TRANSITIVE_DEP_SET_IDS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList transitiveDepSetIds_;
    /**
     * <pre>
     * Other transitively included named set of files.
     * </pre>
     *
     * <code>repeated string transitive_dep_set_ids = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getTransitiveDepSetIdsList() {
      return transitiveDepSetIds_;
    }
    /**
     * <pre>
     * Other transitively included named set of files.
     * </pre>
     *
     * <code>repeated string transitive_dep_set_ids = 2;</code>
     */
    public int getTransitiveDepSetIdsCount() {
      return transitiveDepSetIds_.size();
    }
    /**
     * <pre>
     * Other transitively included named set of files.
     * </pre>
     *
     * <code>repeated string transitive_dep_set_ids = 2;</code>
     */
    public java.lang.String getTransitiveDepSetIds(int index) {
      return transitiveDepSetIds_.get(index);
    }
    /**
     * <pre>
     * Other transitively included named set of files.
     * </pre>
     *
     * <code>repeated string transitive_dep_set_ids = 2;</code>
     */
    public com.google.protobuf.ByteString
        getTransitiveDepSetIdsBytes(int index) {
      return transitiveDepSetIds_.getByteString(index);
    }

    public static final int DIRECT_ARTIFACT_IDS_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList directArtifactIds_;
    /**
     * <pre>
     * The list of input artifact IDs that are immediately contained in this set.
     * </pre>
     *
     * <code>repeated string direct_artifact_ids = 3;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getDirectArtifactIdsList() {
      return directArtifactIds_;
    }
    /**
     * <pre>
     * The list of input artifact IDs that are immediately contained in this set.
     * </pre>
     *
     * <code>repeated string direct_artifact_ids = 3;</code>
     */
    public int getDirectArtifactIdsCount() {
      return directArtifactIds_.size();
    }
    /**
     * <pre>
     * The list of input artifact IDs that are immediately contained in this set.
     * </pre>
     *
     * <code>repeated string direct_artifact_ids = 3;</code>
     */
    public java.lang.String getDirectArtifactIds(int index) {
      return directArtifactIds_.get(index);
    }
    /**
     * <pre>
     * The list of input artifact IDs that are immediately contained in this set.
     * </pre>
     *
     * <code>repeated string direct_artifact_ids = 3;</code>
     */
    public com.google.protobuf.ByteString
        getDirectArtifactIdsBytes(int index) {
      return directArtifactIds_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      for (int i = 0; i < transitiveDepSetIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, transitiveDepSetIds_.getRaw(i));
      }
      for (int i = 0; i < directArtifactIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, directArtifactIds_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < transitiveDepSetIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(transitiveDepSetIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTransitiveDepSetIdsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < directArtifactIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(directArtifactIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDirectArtifactIdsList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles other = (com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles) obj;

      boolean result = true;
      result = result && getId()
          .equals(other.getId());
      result = result && getTransitiveDepSetIdsList()
          .equals(other.getTransitiveDepSetIdsList());
      result = result && getDirectArtifactIdsList()
          .equals(other.getDirectArtifactIdsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      if (getTransitiveDepSetIdsCount() > 0) {
        hash = (37 * hash) + TRANSITIVE_DEP_SET_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getTransitiveDepSetIdsList().hashCode();
      }
      if (getDirectArtifactIdsCount() > 0) {
        hash = (37 * hash) + DIRECT_ARTIFACT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getDirectArtifactIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code analysis.DepSetOfFiles}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.DepSetOfFiles)
        com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFilesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_DepSetOfFiles_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_DepSetOfFiles_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.class, com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        transitiveDepSetIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        directArtifactIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_DepSetOfFiles_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles result = new com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.id_ = id_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          transitiveDepSetIds_ = transitiveDepSetIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.transitiveDepSetIds_ = transitiveDepSetIds_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          directArtifactIds_ = directArtifactIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.directArtifactIds_ = directArtifactIds_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.transitiveDepSetIds_.isEmpty()) {
          if (transitiveDepSetIds_.isEmpty()) {
            transitiveDepSetIds_ = other.transitiveDepSetIds_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureTransitiveDepSetIdsIsMutable();
            transitiveDepSetIds_.addAll(other.transitiveDepSetIds_);
          }
          onChanged();
        }
        if (!other.directArtifactIds_.isEmpty()) {
          if (directArtifactIds_.isEmpty()) {
            directArtifactIds_ = other.directArtifactIds_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureDirectArtifactIdsIsMutable();
            directArtifactIds_.addAll(other.directArtifactIds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Identifier for this named set of files; this is an opaque string, only
       * valid for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this named set of files; this is an opaque string, only
       * valid for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this named set of files; this is an opaque string, only
       * valid for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this named set of files; this is an opaque string, only
       * valid for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this named set of files; this is an opaque string, only
       * valid for the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList transitiveDepSetIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTransitiveDepSetIdsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          transitiveDepSetIds_ = new com.google.protobuf.LazyStringArrayList(transitiveDepSetIds_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getTransitiveDepSetIdsList() {
        return transitiveDepSetIds_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public int getTransitiveDepSetIdsCount() {
        return transitiveDepSetIds_.size();
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public java.lang.String getTransitiveDepSetIds(int index) {
        return transitiveDepSetIds_.get(index);
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTransitiveDepSetIdsBytes(int index) {
        return transitiveDepSetIds_.getByteString(index);
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public Builder setTransitiveDepSetIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTransitiveDepSetIdsIsMutable();
        transitiveDepSetIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public Builder addTransitiveDepSetIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTransitiveDepSetIdsIsMutable();
        transitiveDepSetIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public Builder addAllTransitiveDepSetIds(
          java.lang.Iterable<java.lang.String> values) {
        ensureTransitiveDepSetIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, transitiveDepSetIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public Builder clearTransitiveDepSetIds() {
        transitiveDepSetIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Other transitively included named set of files.
       * </pre>
       *
       * <code>repeated string transitive_dep_set_ids = 2;</code>
       */
      public Builder addTransitiveDepSetIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTransitiveDepSetIdsIsMutable();
        transitiveDepSetIds_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList directArtifactIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDirectArtifactIdsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          directArtifactIds_ = new com.google.protobuf.LazyStringArrayList(directArtifactIds_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getDirectArtifactIdsList() {
        return directArtifactIds_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public int getDirectArtifactIdsCount() {
        return directArtifactIds_.size();
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public java.lang.String getDirectArtifactIds(int index) {
        return directArtifactIds_.get(index);
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public com.google.protobuf.ByteString
          getDirectArtifactIdsBytes(int index) {
        return directArtifactIds_.getByteString(index);
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public Builder setDirectArtifactIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDirectArtifactIdsIsMutable();
        directArtifactIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public Builder addDirectArtifactIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDirectArtifactIdsIsMutable();
        directArtifactIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public Builder addAllDirectArtifactIds(
          java.lang.Iterable<java.lang.String> values) {
        ensureDirectArtifactIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, directArtifactIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public Builder clearDirectArtifactIds() {
        directArtifactIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The list of input artifact IDs that are immediately contained in this set.
       * </pre>
       *
       * <code>repeated string direct_artifact_ids = 3;</code>
       */
      public Builder addDirectArtifactIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDirectArtifactIdsIsMutable();
        directArtifactIds_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.DepSetOfFiles)
    }

    // @@protoc_insertion_point(class_scope:analysis.DepSetOfFiles)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.DepSetOfFiles getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigurationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.Configuration)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Identifier for this configuration; this is an opaque string, only valid for
     * the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    java.lang.String getId();
    /**
     * <pre>
     * Identifier for this configuration; this is an opaque string, only valid for
     * the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * The mnemonic representing the build configuration.
     * </pre>
     *
     * <code>string mnemonic = 2;</code>
     */
    java.lang.String getMnemonic();
    /**
     * <pre>
     * The mnemonic representing the build configuration.
     * </pre>
     *
     * <code>string mnemonic = 2;</code>
     */
    com.google.protobuf.ByteString
        getMnemonicBytes();

    /**
     * <pre>
     * The platform string.
     * </pre>
     *
     * <code>string platform_name = 3;</code>
     */
    java.lang.String getPlatformName();
    /**
     * <pre>
     * The platform string.
     * </pre>
     *
     * <code>string platform_name = 3;</code>
     */
    com.google.protobuf.ByteString
        getPlatformNameBytes();

    /**
     * <pre>
     * The checksum representation of the configuration options;
     * </pre>
     *
     * <code>string checksum = 4;</code>
     */
    java.lang.String getChecksum();
    /**
     * <pre>
     * The checksum representation of the configuration options;
     * </pre>
     *
     * <code>string checksum = 4;</code>
     */
    com.google.protobuf.ByteString
        getChecksumBytes();
  }
  /**
   * Protobuf type {@code analysis.Configuration}
   */
  public  static final class Configuration extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.Configuration)
      ConfigurationOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Configuration.newBuilder() to construct.
    private Configuration(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Configuration() {
      id_ = "";
      mnemonic_ = "";
      platformName_ = "";
      checksum_ = "";
    }

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

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              mnemonic_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              platformName_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              checksum_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Configuration_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Configuration_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.class, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * Identifier for this configuration; this is an opaque string, only valid for
     * the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Identifier for this configuration; this is an opaque string, only valid for
     * the particular dump of the analysis.
     * </pre>
     *
     * <code>string id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MNEMONIC_FIELD_NUMBER = 2;
    private volatile java.lang.Object mnemonic_;
    /**
     * <pre>
     * The mnemonic representing the build configuration.
     * </pre>
     *
     * <code>string mnemonic = 2;</code>
     */
    public java.lang.String getMnemonic() {
      java.lang.Object ref = mnemonic_;
      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();
        mnemonic_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The mnemonic representing the build configuration.
     * </pre>
     *
     * <code>string mnemonic = 2;</code>
     */
    public com.google.protobuf.ByteString
        getMnemonicBytes() {
      java.lang.Object ref = mnemonic_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mnemonic_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PLATFORM_NAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object platformName_;
    /**
     * <pre>
     * The platform string.
     * </pre>
     *
     * <code>string platform_name = 3;</code>
     */
    public java.lang.String getPlatformName() {
      java.lang.Object ref = platformName_;
      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();
        platformName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The platform string.
     * </pre>
     *
     * <code>string platform_name = 3;</code>
     */
    public com.google.protobuf.ByteString
        getPlatformNameBytes() {
      java.lang.Object ref = platformName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        platformName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CHECKSUM_FIELD_NUMBER = 4;
    private volatile java.lang.Object checksum_;
    /**
     * <pre>
     * The checksum representation of the configuration options;
     * </pre>
     *
     * <code>string checksum = 4;</code>
     */
    public java.lang.String getChecksum() {
      java.lang.Object ref = checksum_;
      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();
        checksum_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The checksum representation of the configuration options;
     * </pre>
     *
     * <code>string checksum = 4;</code>
     */
    public com.google.protobuf.ByteString
        getChecksumBytes() {
      java.lang.Object ref = checksum_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        checksum_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getMnemonicBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, mnemonic_);
      }
      if (!getPlatformNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, platformName_);
      }
      if (!getChecksumBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, checksum_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getMnemonicBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, mnemonic_);
      }
      if (!getPlatformNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, platformName_);
      }
      if (!getChecksumBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, checksum_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration other = (com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration) obj;

      boolean result = true;
      result = result && getId()
          .equals(other.getId());
      result = result && getMnemonic()
          .equals(other.getMnemonic());
      result = result && getPlatformName()
          .equals(other.getPlatformName());
      result = result && getChecksum()
          .equals(other.getChecksum());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + MNEMONIC_FIELD_NUMBER;
      hash = (53 * hash) + getMnemonic().hashCode();
      hash = (37 * hash) + PLATFORM_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getPlatformName().hashCode();
      hash = (37 * hash) + CHECKSUM_FIELD_NUMBER;
      hash = (53 * hash) + getChecksum().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code analysis.Configuration}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.Configuration)
        com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Configuration_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Configuration_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.class, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        mnemonic_ = "";

        platformName_ = "";

        checksum_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_Configuration_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration result = new com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration(this);
        result.id_ = id_;
        result.mnemonic_ = mnemonic_;
        result.platformName_ = platformName_;
        result.checksum_ = checksum_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getMnemonic().isEmpty()) {
          mnemonic_ = other.mnemonic_;
          onChanged();
        }
        if (!other.getPlatformName().isEmpty()) {
          platformName_ = other.platformName_;
          onChanged();
        }
        if (!other.getChecksum().isEmpty()) {
          checksum_ = other.checksum_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Identifier for this configuration; this is an opaque string, only valid for
       * the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this configuration; this is an opaque string, only valid for
       * the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Identifier for this configuration; this is an opaque string, only valid for
       * the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this configuration; this is an opaque string, only valid for
       * the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Identifier for this configuration; this is an opaque string, only valid for
       * the particular dump of the analysis.
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object mnemonic_ = "";
      /**
       * <pre>
       * The mnemonic representing the build configuration.
       * </pre>
       *
       * <code>string mnemonic = 2;</code>
       */
      public java.lang.String getMnemonic() {
        java.lang.Object ref = mnemonic_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          mnemonic_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The mnemonic representing the build configuration.
       * </pre>
       *
       * <code>string mnemonic = 2;</code>
       */
      public com.google.protobuf.ByteString
          getMnemonicBytes() {
        java.lang.Object ref = mnemonic_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mnemonic_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The mnemonic representing the build configuration.
       * </pre>
       *
       * <code>string mnemonic = 2;</code>
       */
      public Builder setMnemonic(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        mnemonic_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The mnemonic representing the build configuration.
       * </pre>
       *
       * <code>string mnemonic = 2;</code>
       */
      public Builder clearMnemonic() {
        
        mnemonic_ = getDefaultInstance().getMnemonic();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The mnemonic representing the build configuration.
       * </pre>
       *
       * <code>string mnemonic = 2;</code>
       */
      public Builder setMnemonicBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        mnemonic_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object platformName_ = "";
      /**
       * <pre>
       * The platform string.
       * </pre>
       *
       * <code>string platform_name = 3;</code>
       */
      public java.lang.String getPlatformName() {
        java.lang.Object ref = platformName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          platformName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The platform string.
       * </pre>
       *
       * <code>string platform_name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getPlatformNameBytes() {
        java.lang.Object ref = platformName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          platformName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The platform string.
       * </pre>
       *
       * <code>string platform_name = 3;</code>
       */
      public Builder setPlatformName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        platformName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The platform string.
       * </pre>
       *
       * <code>string platform_name = 3;</code>
       */
      public Builder clearPlatformName() {
        
        platformName_ = getDefaultInstance().getPlatformName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The platform string.
       * </pre>
       *
       * <code>string platform_name = 3;</code>
       */
      public Builder setPlatformNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        platformName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object checksum_ = "";
      /**
       * <pre>
       * The checksum representation of the configuration options;
       * </pre>
       *
       * <code>string checksum = 4;</code>
       */
      public java.lang.String getChecksum() {
        java.lang.Object ref = checksum_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          checksum_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The checksum representation of the configuration options;
       * </pre>
       *
       * <code>string checksum = 4;</code>
       */
      public com.google.protobuf.ByteString
          getChecksumBytes() {
        java.lang.Object ref = checksum_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          checksum_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The checksum representation of the configuration options;
       * </pre>
       *
       * <code>string checksum = 4;</code>
       */
      public Builder setChecksum(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        checksum_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The checksum representation of the configuration options;
       * </pre>
       *
       * <code>string checksum = 4;</code>
       */
      public Builder clearChecksum() {
        
        checksum_ = getDefaultInstance().getChecksum();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The checksum representation of the configuration options;
       * </pre>
       *
       * <code>string checksum = 4;</code>
       */
      public Builder setChecksumBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        checksum_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.Configuration)
    }

    // @@protoc_insertion_point(class_scope:analysis.Configuration)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface KeyValuePairOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.KeyValuePair)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The variable name.
     * </pre>
     *
     * <code>string key = 1;</code>
     */
    java.lang.String getKey();
    /**
     * <pre>
     * The variable name.
     * </pre>
     *
     * <code>string key = 1;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * The variable value.
     * </pre>
     *
     * <code>string value = 2;</code>
     */
    java.lang.String getValue();
    /**
     * <pre>
     * The variable value.
     * </pre>
     *
     * <code>string value = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code analysis.KeyValuePair}
   */
  public  static final class KeyValuePair extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.KeyValuePair)
      KeyValuePairOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use KeyValuePair.newBuilder() to construct.
    private KeyValuePair(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private KeyValuePair() {
      key_ = "";
      value_ = "";
    }

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

              key_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              value_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_KeyValuePair_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_KeyValuePair_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.class, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder.class);
    }

    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * <pre>
     * The variable name.
     * </pre>
     *
     * <code>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();
        key_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The variable name.
     * </pre>
     *
     * <code>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_;
    /**
     * <pre>
     * The variable value.
     * </pre>
     *
     * <code>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();
        value_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The variable value.
     * </pre>
     *
     * <code>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;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      if (!getValueBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      if (!getValueBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair other = (com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + KEY_FIELD_NUMBER;
      hash = (53 * hash) + getKey().hashCode();
      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.analysis.AnalysisProtos.KeyValuePair parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair 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.analysis.AnalysisProtos.KeyValuePair parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair 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.analysis.AnalysisProtos.KeyValuePair parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair 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.analysis.AnalysisProtos.KeyValuePair parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair 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.analysis.AnalysisProtos.KeyValuePair 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.analysis.AnalysisProtos.KeyValuePair parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code analysis.KeyValuePair}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.KeyValuePair)
        com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePairOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_KeyValuePair_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_KeyValuePair_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.class, com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        key_ = "";

        value_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_KeyValuePair_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair result = new com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair(this);
        result.key_ = key_;
        result.value_ = value_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair.getDefaultInstance()) return this;
        if (!other.getKey().isEmpty()) {
          key_ = other.key_;
          onChanged();
        }
        if (!other.getValue().isEmpty()) {
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object key_ = "";
      /**
       * <pre>
       * The variable name.
       * </pre>
       *
       * <code>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();
          key_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The variable name.
       * </pre>
       *
       * <code>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;
        }
      }
      /**
       * <pre>
       * The variable name.
       * </pre>
       *
       * <code>string key = 1;</code>
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The variable name.
       * </pre>
       *
       * <code>string key = 1;</code>
       */
      public Builder clearKey() {
        
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The variable name.
       * </pre>
       *
       * <code>string key = 1;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        key_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <pre>
       * The variable value.
       * </pre>
       *
       * <code>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();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The variable value.
       * </pre>
       *
       * <code>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;
        }
      }
      /**
       * <pre>
       * The variable value.
       * </pre>
       *
       * <code>string value = 2;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The variable value.
       * </pre>
       *
       * <code>string value = 2;</code>
       */
      public Builder clearValue() {
        
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The variable value.
       * </pre>
       *
       * <code>string value = 2;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        value_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.KeyValuePair)
    }

    // @@protoc_insertion_point(class_scope:analysis.KeyValuePair)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.KeyValuePair getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfiguredTargetOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.ConfiguredTarget)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The target. We use blaze_query.Target defined in build.proto instead of
     * the Target defined in this file because blaze_query.Target is much heavier
     * and will output proto results similar to what users are familiar with from
     * regular blaze query.
     * </pre>
     *
     * <code>.blaze_query.Target target = 1;</code>
     */
    boolean hasTarget();
    /**
     * <pre>
     * The target. We use blaze_query.Target defined in build.proto instead of
     * the Target defined in this file because blaze_query.Target is much heavier
     * and will output proto results similar to what users are familiar with from
     * regular blaze query.
     * </pre>
     *
     * <code>.blaze_query.Target target = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getTarget();
    /**
     * <pre>
     * The target. We use blaze_query.Target defined in build.proto instead of
     * the Target defined in this file because blaze_query.Target is much heavier
     * and will output proto results similar to what users are familiar with from
     * regular blaze query.
     * </pre>
     *
     * <code>.blaze_query.Target target = 1;</code>
     */
    com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder getTargetOrBuilder();

    /**
     * <pre>
     * The configuration
     * </pre>
     *
     * <code>.analysis.Configuration configuration = 2;</code>
     */
    boolean hasConfiguration();
    /**
     * <pre>
     * The configuration
     * </pre>
     *
     * <code>.analysis.Configuration configuration = 2;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getConfiguration();
    /**
     * <pre>
     * The configuration
     * </pre>
     *
     * <code>.analysis.Configuration configuration = 2;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder getConfigurationOrBuilder();
  }
  /**
   * Protobuf type {@code analysis.ConfiguredTarget}
   */
  public  static final class ConfiguredTarget extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.ConfiguredTarget)
      ConfiguredTargetOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfiguredTarget.newBuilder() to construct.
    private ConfiguredTarget(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConfiguredTarget() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConfiguredTarget(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder subBuilder = null;
              if (target_ != null) {
                subBuilder = target_.toBuilder();
              }
              target_ = input.readMessage(com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(target_);
                target_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder subBuilder = null;
              if (configuration_ != null) {
                subBuilder = configuration_.toBuilder();
              }
              configuration_ = input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(configuration_);
                configuration_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ConfiguredTarget_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ConfiguredTarget_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.class, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder.class);
    }

    public static final int TARGET_FIELD_NUMBER = 1;
    private com.google.devtools.build.lib.query2.proto.proto2api.Build.Target target_;
    /**
     * <pre>
     * The target. We use blaze_query.Target defined in build.proto instead of
     * the Target defined in this file because blaze_query.Target is much heavier
     * and will output proto results similar to what users are familiar with from
     * regular blaze query.
     * </pre>
     *
     * <code>.blaze_query.Target target = 1;</code>
     */
    public boolean hasTarget() {
      return target_ != null;
    }
    /**
     * <pre>
     * The target. We use blaze_query.Target defined in build.proto instead of
     * the Target defined in this file because blaze_query.Target is much heavier
     * and will output proto results similar to what users are familiar with from
     * regular blaze query.
     * </pre>
     *
     * <code>.blaze_query.Target target = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getTarget() {
      return target_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.getDefaultInstance() : target_;
    }
    /**
     * <pre>
     * The target. We use blaze_query.Target defined in build.proto instead of
     * the Target defined in this file because blaze_query.Target is much heavier
     * and will output proto results similar to what users are familiar with from
     * regular blaze query.
     * </pre>
     *
     * <code>.blaze_query.Target target = 1;</code>
     */
    public com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder getTargetOrBuilder() {
      return getTarget();
    }

    public static final int CONFIGURATION_FIELD_NUMBER = 2;
    private com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration configuration_;
    /**
     * <pre>
     * The configuration
     * </pre>
     *
     * <code>.analysis.Configuration configuration = 2;</code>
     */
    public boolean hasConfiguration() {
      return configuration_ != null;
    }
    /**
     * <pre>
     * The configuration
     * </pre>
     *
     * <code>.analysis.Configuration configuration = 2;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getConfiguration() {
      return configuration_ == null ? com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.getDefaultInstance() : configuration_;
    }
    /**
     * <pre>
     * The configuration
     * </pre>
     *
     * <code>.analysis.Configuration configuration = 2;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder getConfigurationOrBuilder() {
      return getConfiguration();
    }

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

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

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (target_ != null) {
        output.writeMessage(1, getTarget());
      }
      if (configuration_ != null) {
        output.writeMessage(2, getConfiguration());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (target_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTarget());
      }
      if (configuration_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getConfiguration());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget other = (com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget) obj;

      boolean result = true;
      result = result && (hasTarget() == other.hasTarget());
      if (hasTarget()) {
        result = result && getTarget()
            .equals(other.getTarget());
      }
      result = result && (hasConfiguration() == other.hasConfiguration());
      if (hasConfiguration()) {
        result = result && getConfiguration()
            .equals(other.getConfiguration());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTarget()) {
        hash = (37 * hash) + TARGET_FIELD_NUMBER;
        hash = (53 * hash) + getTarget().hashCode();
      }
      if (hasConfiguration()) {
        hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
        hash = (53 * hash) + getConfiguration().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code analysis.ConfiguredTarget}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.ConfiguredTarget)
        com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ConfiguredTarget_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ConfiguredTarget_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.class, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (targetBuilder_ == null) {
          target_ = null;
        } else {
          target_ = null;
          targetBuilder_ = null;
        }
        if (configurationBuilder_ == null) {
          configuration_ = null;
        } else {
          configuration_ = null;
          configurationBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_ConfiguredTarget_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget result = new com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget(this);
        if (targetBuilder_ == null) {
          result.target_ = target_;
        } else {
          result.target_ = targetBuilder_.build();
        }
        if (configurationBuilder_ == null) {
          result.configuration_ = configuration_;
        } else {
          result.configuration_ = configurationBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.getDefaultInstance()) return this;
        if (other.hasTarget()) {
          mergeTarget(other.getTarget());
        }
        if (other.hasConfiguration()) {
          mergeConfiguration(other.getConfiguration());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasTarget()) {
          if (!getTarget().isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.google.devtools.build.lib.query2.proto.proto2api.Build.Target target_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          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>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      public boolean hasTarget() {
        return targetBuilder_ != null || target_ != null;
      }
      /**
       * <pre>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target getTarget() {
        if (targetBuilder_ == null) {
          return target_ == null ? com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.getDefaultInstance() : target_;
        } else {
          return targetBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      public Builder setTarget(com.google.devtools.build.lib.query2.proto.proto2api.Build.Target value) {
        if (targetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          target_ = value;
          onChanged();
        } else {
          targetBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      public Builder setTarget(
          com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder builderForValue) {
        if (targetBuilder_ == null) {
          target_ = builderForValue.build();
          onChanged();
        } else {
          targetBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      public Builder mergeTarget(com.google.devtools.build.lib.query2.proto.proto2api.Build.Target value) {
        if (targetBuilder_ == null) {
          if (target_ != null) {
            target_ =
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.newBuilder(target_).mergeFrom(value).buildPartial();
          } else {
            target_ = value;
          }
          onChanged();
        } else {
          targetBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      public Builder clearTarget() {
        if (targetBuilder_ == null) {
          target_ = null;
          onChanged();
        } else {
          target_ = null;
          targetBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.Builder getTargetBuilder() {
        
        onChanged();
        return getTargetFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      public com.google.devtools.build.lib.query2.proto.proto2api.Build.TargetOrBuilder getTargetOrBuilder() {
        if (targetBuilder_ != null) {
          return targetBuilder_.getMessageOrBuilder();
        } else {
          return target_ == null ?
              com.google.devtools.build.lib.query2.proto.proto2api.Build.Target.getDefaultInstance() : target_;
        }
      }
      /**
       * <pre>
       * The target. We use blaze_query.Target defined in build.proto instead of
       * the Target defined in this file because blaze_query.Target is much heavier
       * and will output proto results similar to what users are familiar with from
       * regular blaze query.
       * </pre>
       *
       * <code>.blaze_query.Target target = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          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.SingleFieldBuilderV3<
              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>(
                  getTarget(),
                  getParentForChildren(),
                  isClean());
          target_ = null;
        }
        return targetBuilder_;
      }

      private com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration configuration_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder> configurationBuilder_;
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      public boolean hasConfiguration() {
        return configurationBuilder_ != null || configuration_ != null;
      }
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration getConfiguration() {
        if (configurationBuilder_ == null) {
          return configuration_ == null ? com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.getDefaultInstance() : configuration_;
        } else {
          return configurationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      public Builder setConfiguration(com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configuration_ = value;
          onChanged();
        } else {
          configurationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      public Builder setConfiguration(
          com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          configuration_ = builderForValue.build();
          onChanged();
        } else {
          configurationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      public Builder mergeConfiguration(com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration value) {
        if (configurationBuilder_ == null) {
          if (configuration_ != null) {
            configuration_ =
              com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.newBuilder(configuration_).mergeFrom(value).buildPartial();
          } else {
            configuration_ = value;
          }
          onChanged();
        } else {
          configurationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      public Builder clearConfiguration() {
        if (configurationBuilder_ == null) {
          configuration_ = null;
          onChanged();
        } else {
          configuration_ = null;
          configurationBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder getConfigurationBuilder() {
        
        onChanged();
        return getConfigurationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder getConfigurationOrBuilder() {
        if (configurationBuilder_ != null) {
          return configurationBuilder_.getMessageOrBuilder();
        } else {
          return configuration_ == null ?
              com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.getDefaultInstance() : configuration_;
        }
      }
      /**
       * <pre>
       * The configuration
       * </pre>
       *
       * <code>.analysis.Configuration configuration = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder> 
          getConfigurationFieldBuilder() {
        if (configurationBuilder_ == null) {
          configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration, com.google.devtools.build.lib.analysis.AnalysisProtos.Configuration.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfigurationOrBuilder>(
                  getConfiguration(),
                  getParentForChildren(),
                  isClean());
          configuration_ = null;
        }
        return configurationBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.ConfiguredTarget)
    }

    // @@protoc_insertion_point(class_scope:analysis.ConfiguredTarget)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CqueryResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:analysis.CqueryResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget> 
        getResultsList();
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget getResults(int index);
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    int getResultsCount();
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder> 
        getResultsOrBuilderList();
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder getResultsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Container for cquery results
   * </pre>
   *
   * Protobuf type {@code analysis.CqueryResult}
   */
  public  static final class CqueryResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:analysis.CqueryResult)
      CqueryResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CqueryResult.newBuilder() to construct.
    private CqueryResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CqueryResult() {
      results_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CqueryResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                results_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget>();
                mutable_bitField0_ |= 0x00000001;
              }
              results_.add(
                  input.readMessage(com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          results_ = java.util.Collections.unmodifiableList(results_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_CqueryResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_CqueryResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult.class, com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult.Builder.class);
    }

    public static final int RESULTS_FIELD_NUMBER = 1;
    private java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget> results_;
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget> getResultsList() {
      return results_;
    }
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder> 
        getResultsOrBuilderList() {
      return results_;
    }
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    public int getResultsCount() {
      return results_.size();
    }
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget getResults(int index) {
      return results_.get(index);
    }
    /**
     * <pre>
     * All the configuredtargets returns by cquery
     * </pre>
     *
     * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
     */
    public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder getResultsOrBuilder(
        int index) {
      return results_.get(index);
    }

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

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

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < results_.size(); i++) {
        output.writeMessage(1, results_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < results_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, results_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult other = (com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult) obj;

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

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

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Container for cquery results
     * </pre>
     *
     * Protobuf type {@code analysis.CqueryResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:analysis.CqueryResult)
        com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_CqueryResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_CqueryResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult.class, com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getResultsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (resultsBuilder_ == null) {
          results_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          resultsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.internal_static_analysis_CqueryResult_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult getDefaultInstanceForType() {
        return com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult build() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult buildPartial() {
        com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult result = new com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult(this);
        int from_bitField0_ = bitField0_;
        if (resultsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            results_ = java.util.Collections.unmodifiableList(results_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.results_ = results_;
        } else {
          result.results_ = resultsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult other) {
        if (other == com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult.getDefaultInstance()) return this;
        if (resultsBuilder_ == null) {
          if (!other.results_.isEmpty()) {
            if (results_.isEmpty()) {
              results_ = other.results_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureResultsIsMutable();
              results_.addAll(other.results_);
            }
            onChanged();
          }
        } else {
          if (!other.results_.isEmpty()) {
            if (resultsBuilder_.isEmpty()) {
              resultsBuilder_.dispose();
              resultsBuilder_ = null;
              results_ = other.results_;
              bitField0_ = (bitField0_ & ~0x00000001);
              resultsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getResultsFieldBuilder() : null;
            } else {
              resultsBuilder_.addAllMessages(other.results_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getResultsCount(); i++) {
          if (!getResults(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult) 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.analysis.AnalysisProtos.ConfiguredTarget> results_ =
        java.util.Collections.emptyList();
      private void ensureResultsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          results_ = new java.util.ArrayList<com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget>(results_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder> resultsBuilder_;

      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget> getResultsList() {
        if (resultsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(results_);
        } else {
          return resultsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public int getResultsCount() {
        if (resultsBuilder_ == null) {
          return results_.size();
        } else {
          return resultsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget getResults(int index) {
        if (resultsBuilder_ == null) {
          return results_.get(index);
        } else {
          return resultsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder setResults(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.set(index, value);
          onChanged();
        } else {
          resultsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder setResults(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.set(index, builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder addResults(com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.add(value);
          onChanged();
        } else {
          resultsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder addResults(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.add(index, value);
          onChanged();
        } else {
          resultsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder addResults(
          com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.add(builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder addResults(
          int index, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.add(index, builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder addAllResults(
          java.lang.Iterable<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget> values) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, results_);
          onChanged();
        } else {
          resultsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder clearResults() {
        if (resultsBuilder_ == null) {
          results_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          resultsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public Builder removeResults(int index) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.remove(index);
          onChanged();
        } else {
          resultsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder getResultsBuilder(
          int index) {
        return getResultsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder getResultsOrBuilder(
          int index) {
        if (resultsBuilder_ == null) {
          return results_.get(index);  } else {
          return resultsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder> 
           getResultsOrBuilderList() {
        if (resultsBuilder_ != null) {
          return resultsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(results_);
        }
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder addResultsBuilder() {
        return getResultsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.getDefaultInstance());
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder addResultsBuilder(
          int index) {
        return getResultsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.getDefaultInstance());
      }
      /**
       * <pre>
       * All the configuredtargets returns by cquery
       * </pre>
       *
       * <code>repeated .analysis.ConfiguredTarget results = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder> 
           getResultsBuilderList() {
        return getResultsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder> 
          getResultsFieldBuilder() {
        if (resultsBuilder_ == null) {
          resultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTarget.Builder, com.google.devtools.build.lib.analysis.AnalysisProtos.ConfiguredTargetOrBuilder>(
                  results_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          results_ = null;
        }
        return resultsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:analysis.CqueryResult)
    }

    // @@protoc_insertion_point(class_scope:analysis.CqueryResult)
    private static final com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult();
    }

    public static com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.analysis.AnalysisProtos.CqueryResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_ActionGraphContainer_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_ActionGraphContainer_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_Artifact_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_Artifact_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_Action_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_Action_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_Target_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_Target_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_RuleClass_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_RuleClass_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_AspectDescriptor_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_AspectDescriptor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_DepSetOfFiles_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_DepSetOfFiles_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_Configuration_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_Configuration_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_KeyValuePair_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_KeyValuePair_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_ConfiguredTarget_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_ConfiguredTarget_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_analysis_CqueryResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_analysis_CqueryResult_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n src/main/protobuf/analysis.proto\022\010anal" +
      "ysis\032\035src/main/protobuf/build.proto\"\311\002\n\024" +
      "ActionGraphContainer\022%\n\tartifacts\030\001 \003(\0132" +
      "\022.analysis.Artifact\022!\n\007actions\030\002 \003(\0132\020.a" +
      "nalysis.Action\022!\n\007targets\030\003 \003(\0132\020.analys" +
      "is.Target\0221\n\020dep_set_of_files\030\004 \003(\0132\027.an" +
      "alysis.DepSetOfFiles\022.\n\rconfiguration\030\005 " +
      "\003(\0132\027.analysis.Configuration\0226\n\022aspect_d" +
      "escriptors\030\006 \003(\0132\032.analysis.AspectDescri" +
      "ptor\022)\n\014rule_classes\030\007 \003(\0132\023.analysis.Ru" +
      "leClass\"C\n\010Artifact\022\n\n\002id\030\001 \001(\t\022\021\n\texec_" +
      "path\030\002 \001(\t\022\030\n\020is_tree_artifact\030\003 \001(\010\"\275\002\n" +
      "\006Action\022\021\n\ttarget_id\030\001 \001(\t\022\035\n\025aspect_des" +
      "criptor_ids\030\002 \003(\t\022\022\n\naction_key\030\003 \001(\t\022\020\n" +
      "\010mnemonic\030\004 \001(\t\022\030\n\020configuration_id\030\005 \001(" +
      "\t\022\021\n\targuments\030\006 \003(\t\0225\n\025environment_vari" +
      "ables\030\007 \003(\0132\026.analysis.KeyValuePair\022\031\n\021i" +
      "nput_dep_set_ids\030\010 \003(\t\022\022\n\noutput_ids\030\t \003" +
      "(\t\022\030\n\020discovers_inputs\030\n \001(\010\022.\n\016executio" +
      "n_info\030\013 \003(\0132\026.analysis.KeyValuePair\":\n\006" +
      "Target\022\n\n\002id\030\001 \001(\t\022\r\n\005label\030\002 \001(\t\022\025\n\rrul" +
      "e_class_id\030\003 \001(\t\"%\n\tRuleClass\022\n\n\002id\030\001 \001(" +
      "\t\022\014\n\004name\030\002 \001(\t\"X\n\020AspectDescriptor\022\n\n\002i" +
      "d\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022*\n\nparameters\030\003 \003(" +
      "\0132\026.analysis.KeyValuePair\"X\n\rDepSetOfFil" +
      "es\022\n\n\002id\030\001 \001(\t\022\036\n\026transitive_dep_set_ids" +
      "\030\002 \003(\t\022\033\n\023direct_artifact_ids\030\003 \003(\t\"V\n\rC" +
      "onfiguration\022\n\n\002id\030\001 \001(\t\022\020\n\010mnemonic\030\002 \001" +
      "(\t\022\025\n\rplatform_name\030\003 \001(\t\022\020\n\010checksum\030\004 " +
      "\001(\t\"*\n\014KeyValuePair\022\013\n\003key\030\001 \001(\t\022\r\n\005valu" +
      "e\030\002 \001(\t\"g\n\020ConfiguredTarget\022#\n\006target\030\001 " +
      "\001(\0132\023.blaze_query.Target\022.\n\rconfiguratio" +
      "n\030\002 \001(\0132\027.analysis.Configuration\";\n\014Cque" +
      "ryResult\022+\n\007results\030\001 \003(\0132\032.analysis.Con" +
      "figuredTargetB8\n&com.google.devtools.bui" +
      "ld.lib.analysisB\016AnalysisProtosb\006proto3"
    };
    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[] {
          com.google.devtools.build.lib.query2.proto.proto2api.Build.getDescriptor(),
        }, assigner);
    internal_static_analysis_ActionGraphContainer_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_analysis_ActionGraphContainer_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_ActionGraphContainer_descriptor,
        new java.lang.String[] { "Artifacts", "Actions", "Targets", "DepSetOfFiles", "Configuration", "AspectDescriptors", "RuleClasses", });
    internal_static_analysis_Artifact_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_analysis_Artifact_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_Artifact_descriptor,
        new java.lang.String[] { "Id", "ExecPath", "IsTreeArtifact", });
    internal_static_analysis_Action_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_analysis_Action_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_Action_descriptor,
        new java.lang.String[] { "TargetId", "AspectDescriptorIds", "ActionKey", "Mnemonic", "ConfigurationId", "Arguments", "EnvironmentVariables", "InputDepSetIds", "OutputIds", "DiscoversInputs", "ExecutionInfo", });
    internal_static_analysis_Target_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_analysis_Target_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_Target_descriptor,
        new java.lang.String[] { "Id", "Label", "RuleClassId", });
    internal_static_analysis_RuleClass_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_analysis_RuleClass_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_RuleClass_descriptor,
        new java.lang.String[] { "Id", "Name", });
    internal_static_analysis_AspectDescriptor_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_analysis_AspectDescriptor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_AspectDescriptor_descriptor,
        new java.lang.String[] { "Id", "Name", "Parameters", });
    internal_static_analysis_DepSetOfFiles_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_analysis_DepSetOfFiles_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_DepSetOfFiles_descriptor,
        new java.lang.String[] { "Id", "TransitiveDepSetIds", "DirectArtifactIds", });
    internal_static_analysis_Configuration_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_analysis_Configuration_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_Configuration_descriptor,
        new java.lang.String[] { "Id", "Mnemonic", "PlatformName", "Checksum", });
    internal_static_analysis_KeyValuePair_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_analysis_KeyValuePair_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_KeyValuePair_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_analysis_ConfiguredTarget_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_analysis_ConfiguredTarget_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_ConfiguredTarget_descriptor,
        new java.lang.String[] { "Target", "Configuration", });
    internal_static_analysis_CqueryResult_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_analysis_CqueryResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_analysis_CqueryResult_descriptor,
        new java.lang.String[] { "Results", });
    com.google.devtools.build.lib.query2.proto.proto2api.Build.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
